[svn-commits] russell: branch 1.6.0 r181429 - in /branches/1.6.0: ./ main/channel.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Wed Mar 11 17:15:44 CDT 2009


Author: russell
Date: Wed Mar 11 17:15:40 2009
New Revision: 181429

URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=181429
Log:
Merged revisions 181428 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk

........
r181428 | russell | 2009-03-11 17:14:55 -0500 (Wed, 11 Mar 2009) | 2 lines

Make handling of the BRIDGEPVTCALLID variable thread-safe.

........

Modified:
    branches/1.6.0/   (props changed)
    branches/1.6.0/main/channel.c

Propchange: branches/1.6.0/
------------------------------------------------------------------------------
Binary property 'trunk-merged' - no diff available.

Modified: branches/1.6.0/main/channel.c
URL: http://svn.digium.com/svn-view/asterisk/branches/1.6.0/main/channel.c?view=diff&rev=181429&r1=181428&r2=181429
==============================================================================
--- branches/1.6.0/main/channel.c (original)
+++ branches/1.6.0/main/channel.c Wed Mar 11 17:15:40 2009
@@ -4527,25 +4527,39 @@
 			S_OR(c1->cid.cid_num, ""));
 }
 
-static void update_bridgepeer(struct ast_channel *c0, struct ast_channel *c1)
+static void update_bridge_vars(struct ast_channel *c0, struct ast_channel *c1)
 {
 	const char *c0_name;
 	const char *c1_name;
+	const char *c0_pvtid = NULL;
+	const char *c1_pvtid = NULL;
 
 	ast_channel_lock(c1);
 	c1_name = ast_strdupa(c1->name);
+	if (c1->tech->get_pvt_uniqueid) {
+		c1_pvtid = ast_strdupa(c1->tech->get_pvt_uniqueid(c1));
+	}
 	ast_channel_unlock(c1);
 
 	ast_channel_lock(c0);
 	if (!ast_strlen_zero(pbx_builtin_getvar_helper(c0, "BRIDGEPEER"))) {
 		pbx_builtin_setvar_helper(c0, "BRIDGEPEER", c1_name);
 	}
+	if (c1_pvtid) {
+		pbx_builtin_setvar_helper(c0, "BRIDGEPVTCALLID", c1_pvtid);
+	}
 	c0_name = ast_strdupa(c0->name);
+	if (c0->tech->get_pvt_uniqueid) {
+		c0_pvtid = ast_strdupa(c0->tech->get_pvt_uniqueid(c0));
+	}
 	ast_channel_unlock(c0);
 
 	ast_channel_lock(c1);
 	if (!ast_strlen_zero(pbx_builtin_getvar_helper(c1, "BRIDGEPEER"))) {
 		pbx_builtin_setvar_helper(c1, "BRIDGEPEER", c0_name);
+	}
+	if (c0_pvtid) {
+		pbx_builtin_setvar_helper(c1, "BRIDGEPVTCALLID", c0_pvtid);
 	}
 	ast_channel_unlock(c1);
 }
@@ -4702,12 +4716,7 @@
 			break;
 		}
 
-		update_bridgepeer(c0, c1);
-
-		if (c0->tech->get_pvt_uniqueid)
-			pbx_builtin_setvar_helper(c1, "BRIDGEPVTCALLID", c0->tech->get_pvt_uniqueid(c0));
-		if (c1->tech->get_pvt_uniqueid)
-			pbx_builtin_setvar_helper(c0, "BRIDGEPVTCALLID", c1->tech->get_pvt_uniqueid(c1));
+		update_bridge_vars(c0, c1);
 
 		if (c0->tech->bridge &&
 		    (c0->tech->bridge == c1->tech->bridge) &&
@@ -4767,7 +4776,7 @@
 			o1nativeformats = c1->nativeformats;
 		}
 
-		update_bridgepeer(c0, c1);
+		update_bridge_vars(c0, c1);
 
 		res = ast_generic_bridge(c0, c1, config, fo, rc, config->nexteventts);
 		if (res != AST_BRIDGE_RETRY) {




More information about the svn-commits mailing list