The bridge thread was exiting but was never being
reaped using pthread_join(). This has been fixed now
by calling pthread_join() in ast_bridge_destroy().
(closes issue ASTERISK-19834)
Reported by Marcus Hunger
Review: https://reviewboard.asterisk.org/r/2012
........
Merged revisions 369708 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........
Merged revisions 369709 from http://svn.asterisk.org/svn/asterisk/branches/10
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@369710
65c4cc65-6c06-0410-ace0-
fbb531ad65f3
- /* Since all the channels are going away let's go ahead and stop our on thread */
- bridge->stop = 1;
-
bridge->callid = ast_callid_unref(bridge->callid);
}
bridge->callid = ast_callid_unref(bridge->callid);
}
- bridge->stop = 1;
-
- bridge_poke(bridge);
+ if (bridge->thread != AST_PTHREADT_NULL) {
+ pthread_t thread = bridge->thread;
+ bridge->stop = 1;
+ bridge_poke(bridge);
+ ao2_unlock(bridge);
+ pthread_join(thread, NULL);
+ ao2_lock(bridge);
+ }
ast_debug(1, "Telling all channels in bridge %p to end and leave the party\n", bridge);
ast_debug(1, "Telling all channels in bridge %p to end and leave the party\n", bridge);