mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-06 12:36:58 +00:00
(closes issue #10224)
Reported by: irroot Record the threadid of each running thread before shutting them down as the thread themselves may change the value. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@75583 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -4468,17 +4468,18 @@ static int set_config(char *config_file, struct sockaddr_in* sin)
|
|||||||
|
|
||||||
static int unload_module(void)
|
static int unload_module(void)
|
||||||
{
|
{
|
||||||
|
pthread_t previous_netthreadid = netthreadid, previous_precachethreadid = precachethreadid;
|
||||||
ast_module_user_hangup_all();
|
ast_module_user_hangup_all();
|
||||||
|
|
||||||
/* Stop all currently running threads */
|
/* Stop all currently running threads */
|
||||||
dundi_shutdown = 1;
|
dundi_shutdown = 1;
|
||||||
if (netthreadid != AST_PTHREADT_NULL) {
|
if (previous_netthreadid != AST_PTHREADT_NULL) {
|
||||||
pthread_kill(netthreadid, SIGURG);
|
pthread_kill(previous_netthreadid, SIGURG);
|
||||||
pthread_join(netthreadid, NULL);
|
pthread_join(previous_netthreadid, NULL);
|
||||||
}
|
}
|
||||||
if (precachethreadid != AST_PTHREADT_NULL) {
|
if (previous_precachethreadid != AST_PTHREADT_NULL) {
|
||||||
pthread_kill(precachethreadid, SIGURG);
|
pthread_kill(previous_precachethreadid, SIGURG);
|
||||||
pthread_join(precachethreadid, NULL);
|
pthread_join(previous_precachethreadid, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
ast_cli_unregister_multiple(cli_dundi, sizeof(cli_dundi) / sizeof(struct ast_cli_entry));
|
ast_cli_unregister_multiple(cli_dundi, sizeof(cli_dundi) / sizeof(struct ast_cli_entry));
|
||||||
|
Reference in New Issue
Block a user