From: Paul Belanger Date: Wed, 2 Jun 2010 13:34:09 +0000 (+0000) Subject: Merged revisions 266877 via svnmerge from X-Git-Tag: 1.6.2.10-rc1~92 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bc418d569bbfc05dbafff1a0fd583fd0849f29b3;p=thirdparty%2Fasterisk.git Merged revisions 266877 via svnmerge from 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 --- diff --git a/main/bridging.c b/main/bridging.c index 2f5afa2cbe..e034543342 100644 --- a/main/bridging.c +++ b/main/bridging.c @@ -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 */