[Asterisk-cvs] asterisk/channels chan_zap.c,1.169,1.170

markster at lists.digium.com markster at lists.digium.com
Sat Jan 31 13:29:42 CST 2004


Update of /usr/cvsroot/asterisk/channels
In directory mongoose.digium.com:/tmp/cvs-serv30464/channels

Modified Files:
	chan_zap.c 
Log Message:
Handle cause in DISCONNECT too


Index: chan_zap.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_zap.c,v
retrieving revision 1.169
retrieving revision 1.170
diff -u -d -r1.169 -r1.170
--- chan_zap.c	31 Jan 2004 18:46:59 -0000	1.169
+++ chan_zap.c	31 Jan 2004 19:38:22 -0000	1.170
@@ -6526,7 +6526,21 @@
 						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 {




More information about the svn-commits mailing list