aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-01-31 19:38:22 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-01-31 19:38:22 +0000
commit4b14473716d29f5948e15d6a65c4b621d333a8a0 (patch)
tree84cbe3af205459a74198bccd1000a66eebf3f10b
parent3f77bd9cb5a8c97802e11f41c0302f4f7b2fcad3 (diff)
Handle cause in DISCONNECT too
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@2101 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-xchannels/chan_zap.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index ba80313bd..311441098 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 {