[asterisk-commits] file: branch file/bridging r107293 - /team/file/bridging/channels/chan_bridge.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Mar 10 20:11:26 CDT 2008


Author: file
Date: Mon Mar 10 20:11:26 2008
New Revision: 107293

URL: http://svn.digium.com/view/asterisk?view=rev&rev=107293
Log:
Experiment with some locking changes...

Modified:
    team/file/bridging/channels/chan_bridge.c

Modified: team/file/bridging/channels/chan_bridge.c
URL: http://svn.digium.com/view/asterisk/team/file/bridging/channels/chan_bridge.c?view=diff&rev=107293&r1=107292&r2=107293
==============================================================================
--- team/file/bridging/channels/chan_bridge.c (original)
+++ team/file/bridging/channels/chan_bridge.c Mon Mar 10 20:11:26 2008
@@ -84,11 +84,9 @@
 	struct bridge_pvt *p = ast->tech_pvt;
 
 	/* We basically queue the frame up on the other channel if present */
-	ast_mutex_lock(&p->lock);
 	if (p->input && p->output) {
 		ast_queue_frame((p->input == ast ? p->output : p->input), f);
 	}
-	ast_mutex_unlock(&p->lock);
 
 	return 0;
 }
@@ -132,12 +130,13 @@
 	/* Deal with the Asterisk portion of it */
 	ast->tech_pvt = NULL;
 
-	ast_mutex_unlock(&p->lock);
-
 	/* If both sides have been terminated free the structure and be done with things */
 	if (!p->input && !p->output) {
+		ast_mutex_unlock(&p->lock);
 		ast_mutex_destroy(&p->lock);
 		ast_free(p);
+	} else {
+		ast_mutex_unlock(&p->lock);
 	}
 
 	return 0;




More information about the asterisk-commits mailing list