]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 266877 via svnmerge from
authorPaul Belanger <paul.belanger@polybeacon.com>
Wed, 2 Jun 2010 13:34:09 +0000 (13:34 +0000)
committerPaul Belanger <paul.belanger@polybeacon.com>
Wed, 2 Jun 2010 13:34:09 +0000 (13:34 +0000)
https://origsvn.digium.com/svn/asterisk/trunk

........
  r266877 | pabelanger | 2010-06-02 09:32:22 -0400 (Wed, 02 Jun 2010) | 10 lines

  pthread_join to assure the thread is really gone

  (closes issue #15465)
  Reported by: fnordian
  Patches:
        bridging.patch uploaded by fnordian (license 110)
  Tested by: lmadsen, fnordian, peterh

  Review: https://reviewboard.asterisk.org/r/679/
........

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.2@266878 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/bridging.c

index 2f5afa2cbef7db996bf8a74352d6aebe46b44c18..e0345433424313a82f02a0109e12acf6c7afac0c 100644 (file)
@@ -626,11 +626,16 @@ static int smart_bridge_operation(struct ast_bridge *bridge, struct ast_bridge_c
                if (new_technology->capabilities & AST_BRIDGE_CAPABILITY_THREAD) {
                        ast_debug(1, "Telling current bridge thread for bridge %p to refresh\n", bridge);
                        bridge->refresh = 1;
+                       bridge_poke(bridge);
                } else {
+                       pthread_t bridge_thread = bridge->thread;
                        ast_debug(1, "Telling current bridge thread for bridge %p to stop\n", bridge);
                        bridge->stop = 1;
+                       bridge_poke(bridge);
+                       ao2_unlock(bridge);
+                       pthread_join(bridge_thread, NULL);
+                       ao2_lock(bridge);
                }
-               bridge_poke(bridge);
        }
 
        /* Since we are soon going to pass this bridge to a new technology we need to NULL out the bridge_pvt pointer but don't worry as it still exists in temp_bridge, ditto for the old technology */