[Asterisk-cvs] asterisk/channels chan_zap.c,1.393,1.394

jim at lists.digium.com jim at lists.digium.com
Tue Jan 4 14:23:45 CST 2005


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

Modified Files:
	chan_zap.c 
Log Message:
Fixed threeway calling disconnect wrong party bug


Index: chan_zap.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_zap.c,v
retrieving revision 1.393
retrieving revision 1.394
diff -u -d -r1.393 -r1.394
--- chan_zap.c	28 Dec 2004 21:32:25 -0000	1.393
+++ chan_zap.c	4 Jan 2005 20:28:50 -0000	1.394
@@ -3596,8 +3596,28 @@
 							/* Call is already up, drop the last person */
 							if (option_debug)
 								ast_log(LOG_DEBUG, "Got flash with three way call up, dropping last call on %d\n", p->channel);
-							/* If the primary call isn't answered yet, use it */
-							if ((p->subs[SUB_REAL].owner->_state != AST_STATE_UP) && (p->subs[SUB_THREEWAY].owner->_state == AST_STATE_UP)) {
+#if 0
+jim 01/03/05
+		I have absolutely *NO* clue as to why the following was a
+		conditional. It caused a bug in which the WRONG call would
+		get hung up on in certain situations after a 3-way call. It
+		took us over *3 YEARS* to find out the exact conditions to
+		make the problem appear (which are first leg of call, inbound
+		or outbound is answered, you go over to a 3-way dialtone and
+		make a second call, then flash again before the second call
+		has answered (the channel going into STATE_UP condition).
+		Then, when you flash again, then first (original) call would
+		get dropped instead of the second one like it should.
+
+
+	I left the following conditional here (commented out, of course) so
+	that if theres any further issues with this, its here.
+
+	/* If the primary call isn't answered yet, use it */
+	if ((p->subs[SUB_REAL].owner->_state != AST_STATE_UP) && 
+		(p->subs[SUB_THREEWAY].owner->_state == AST_STATE_UP)) 
+#endif
+							{
 								/* Swap back -- we're droppign the real 3-way that isn't finished yet*/
 								swap_subs(p, SUB_THREEWAY, SUB_REAL);
 								p->owner = p->subs[SUB_REAL].owner;




More information about the svn-commits mailing list