[asterisk-commits] file: branch file/bridging r107717 - /team/file/bridging/main/bridging.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Tue Mar 11 15:53:11 CDT 2008
Author: file
Date: Tue Mar 11 15:53:11 2008
New Revision: 107717
URL: http://svn.digium.com/view/asterisk?view=rev&rev=107717
Log:
Only try to get control of the bridge thread if one is running.
Modified:
team/file/bridging/main/bridging.c
Modified: team/file/bridging/main/bridging.c
URL: http://svn.digium.com/view/asterisk/team/file/bridging/main/bridging.c?view=diff&rev=107717&r1=107716&r2=107717
==============================================================================
--- team/file/bridging/main/bridging.c (original)
+++ team/file/bridging/main/bridging.c Tue Mar 11 15:53:11 2008
@@ -519,20 +519,24 @@
/* Mark this bridge as undergoing a smart bridge operation */
bridge->smart = 1;
- /* We start off by getting the thread servicing the current technology to stop and give control to us */
- bridge->thread = AST_PTHREADT_STOP;
- ast_cond_signal(&bridge->cond);
- pthread_kill(thread, SIGURG);
-
- /* Once we let go of the lock the bridge thread should quit and control should be given to us */
- ast_mutex_unlock(&bridge->lock);
-
- /* Of course we have to wait for the thread to exit, that can take some time */
- ast_debug(1, "Waiting for current bridge thread on %p to exit and control to return to us\n", bridge);
- pthread_join(thread, NULL);
-
- /* Now that it is back to us we have to reacquire the lock so we can muck with things :D */
- ast_mutex_lock(&bridge->lock);
+ /* Only try to join the bridge thread if one is running */
+ if (bridge->thread != AST_PTHREADT_NULL) {
+ /* We start off by getting the thread servicing the current technology to stop and give control to us */
+ bridge->thread = AST_PTHREADT_STOP;
+ ast_cond_signal(&bridge->cond);
+ pthread_kill(thread, SIGURG);
+
+ /* Once we let go of the lock the bridge thread should quit and control should be given to us */
+ ast_mutex_unlock(&bridge->lock);
+
+ /* Of course we have to wait for the thread to exit, that can take some time */
+ ast_debug(1, "Waiting for current bridge thread on %p to exit and control to return to us\n", bridge);
+ pthread_join(thread, NULL);
+
+ /* Now that it is back to us we have to reacquire the lock so we can muck with things :D */
+ ast_mutex_lock(&bridge->lock);
+ }
+
ast_debug(1, "Control of bridge %p now belongs to the smart bridge operation\n", bridge);
/* Since we have a temporary bridge structure up above we can make the current one clean */
More information about the asterisk-commits
mailing list