mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-04 11:58:52 +00:00
Fix bridging thread leak.
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
This commit is contained in:
@@ -234,9 +234,6 @@ static void bridge_check_dissolve(struct ast_bridge *bridge, struct ast_bridge_c
|
||||
}
|
||||
}
|
||||
|
||||
/* Since all the channels are going away let's go ahead and stop our on thread */
|
||||
bridge->stop = 1;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -544,9 +541,14 @@ int ast_bridge_destroy(struct ast_bridge *bridge)
|
||||
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);
|
||||
|
||||
|
Reference in New Issue
Block a user