From: Mark Spencer Date: Sat, 31 Jan 2004 19:38:22 +0000 (+0000) Subject: Handle cause in DISCONNECT too X-Git-Tag: 0.9.0~24 X-Git-Url: http://git.asterisk.org/gitweb/?p=asterisk%2Fasterisk.git;a=commitdiff_plain;h=48748b8f9a8427f5ef3dde12e59ecd28259e7dba;ds=sidebyside Handle cause in DISCONNECT too git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2101 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_zap.c b/channels/chan_zap.c index ba80313..3114410 100755 --- a/channels/chan_zap.c +++ b/channels/chan_zap.c @@ -6526,7 +6526,21 @@ static void *pri_dchannel(void *vpri) ast_mutex_lock(&pri->pvt[chan]->lock); if (pri->pvt[chan]->owner) { pri->pvt[chan]->owner->hangupcause = hangup_pri2cause(e->hangup.cause); - pri->pvt[chan]->owner->_softhangup |= AST_SOFTHANGUP_DEV; + switch(e->hangup.cause) { + case PRI_CAUSE_USER_BUSY: + pri->pvt[chan]->subs[SUB_REAL].needbusy =1; + break; + case PRI_CAUSE_CALL_REJECTED: + case PRI_CAUSE_NETWORK_OUT_OF_ORDER: + case PRI_CAUSE_NORMAL_CIRCUIT_CONGESTION: + case PRI_CAUSE_SWITCH_CONGESTION: + case PRI_CAUSE_DESTINATION_OUT_OF_ORDER: + case PRI_CAUSE_NORMAL_TEMPORARY_FAILURE: + pri->pvt[chan]->subs[SUB_REAL].needcongestion =1; + break; + default: + pri->pvt[chan]->owner->_softhangup |= AST_SOFTHANGUP_DEV; + } if (option_verbose > 2) ast_verbose(VERBOSE_PREFIX_3 "Channel %d, span %d got hangup\n", chan, pri->span); } else {