From ec0b259ecf35954027b8593e28d25b157911030a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 26 Feb 2008 22:30:54 +0000 Subject: [PATCH] fix MODENDP-82 git-svn-id: http://svn.openzap.org/svn/openzap/trunk@408 a93c3328-9c30-0410-af19-c9cd2b2d52af --- libs/openzap/mod_openzap/mod_openzap.c | 8 ++++---- libs/openzap/src/zap_analog.c | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/libs/openzap/mod_openzap/mod_openzap.c b/libs/openzap/mod_openzap/mod_openzap.c index 3de436c24f..437e3204c8 100644 --- a/libs/openzap/mod_openzap/mod_openzap.c +++ b/libs/openzap/mod_openzap/mod_openzap.c @@ -752,21 +752,21 @@ static switch_status_t channel_receive_message(switch_core_session_t *session, s tech_pvt = (private_t *) switch_core_session_get_private(session); assert(tech_pvt != NULL); - switch_mutex_lock(tech_pvt->flag_mutex); - switch (tech_pvt->zchan->type) { case ZAP_CHAN_TYPE_FXS: status = channel_receive_message_fxs(session, msg); + break; case ZAP_CHAN_TYPE_FXO: status = channel_receive_message_fxo(session, msg); + break; case ZAP_CHAN_TYPE_B: status = channel_receive_message_b(session, msg); + break; default: status = SWITCH_STATUS_FALSE; + break; } - switch_mutex_unlock(tech_pvt->flag_mutex); - return status; } diff --git a/libs/openzap/src/zap_analog.c b/libs/openzap/src/zap_analog.c index ce01ffaa68..63e360df10 100644 --- a/libs/openzap/src/zap_analog.c +++ b/libs/openzap/src/zap_analog.c @@ -284,7 +284,8 @@ static void *zap_analog_channel_run(zap_thread_t *me, void *obj) zap_channel_command(zchan, ZAP_COMMAND_GENERATE_RING_OFF, NULL); } - if (zap_test_flag(zchan, ZAP_CHANNEL_OFFHOOK) && zchan->last_state >= ZAP_CHANNEL_STATE_IDLE) { + if (zap_test_flag(zchan, ZAP_CHANNEL_OFFHOOK) && + (zchan->last_state == ZAP_CHANNEL_STATE_RING || zchan->last_state >= ZAP_CHANNEL_STATE_IDLE)) { zap_set_state_locked(zchan, ZAP_CHANNEL_STATE_BUSY); } else { zchan->caller_data.hangup_cause = ZAP_CAUSE_NORMAL_CLEARING;