[asterisk-commits] file: trunk r43343 - /trunk/main/rtp.c

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Wed Sep 20 10:08:45 MST 2006


Author: file
Date: Wed Sep 20 12:08:44 2006
New Revision: 43343

URL: http://svn.digium.com/view/asterisk?rev=43343&view=rev
Log:
Totally break a P2P bridge upon going on hold, and re-establish it upon going off hold.

Modified:
    trunk/main/rtp.c

Modified: trunk/main/rtp.c
URL: http://svn.digium.com/view/asterisk/trunk/main/rtp.c?rev=43343&r1=43342&r2=43343&view=diff
==============================================================================
--- trunk/main/rtp.c (original)
+++ trunk/main/rtp.c Wed Sep 20 12:08:44 2006
@@ -2940,14 +2940,30 @@
 			if ((fr->subclass == AST_CONTROL_HOLD) ||
 			    (fr->subclass == AST_CONTROL_UNHOLD) ||
 			    (fr->subclass == AST_CONTROL_VIDUPDATE)) {
-				/* If we are going on hold, then break callback mode */
+				/* If we are going on hold, then break callback mode and P2P bridging */
 				if (fr->subclass == AST_CONTROL_HOLD) {
 					if (p0_callback)
 						p0_callback = p2p_callback_disable(c0, p0, &p0_fds[0], &p0_iod[0]);
 					if (p1_callback)
 						p1_callback = p2p_callback_disable(c1, p1, &p1_fds[0], &p1_iod[0]);
+					p0->bridged = NULL;
+					p1->bridged = NULL;
+					if (vp0) {
+						vp0->bridged = NULL;
+						vp1->bridged = NULL;
+					}
 				} else if (fr->subclass == AST_CONTROL_UNHOLD) {
-					/* If we are off hold, then go back to callback mode */
+					/* If we are off hold, then go back to callback mode and P2P bridging */
+					ast_clear_flag(p0, FLAG_P2P_SENT_MARK);
+					p0->bridged = p1;
+					ast_clear_flag(p1, FLAG_P2P_SENT_MARK);
+					p1->bridged = p0;
+					if (vp0) {
+						ast_clear_flag(vp0, FLAG_P2P_SENT_MARK);
+						vp0->bridged = vp1;
+						ast_clear_flag(vp1, FLAG_P2P_SENT_MARK);
+						vp1->bridged = vp0;
+					}
 					p0_callback = p2p_callback_enable(c0, p0, &p0_fds[0], &p0_iod[0]);
 					p1_callback = p2p_callback_enable(c1, p1, &p1_fds[0], &p1_iod[0]);
 				}



More information about the asterisk-commits mailing list