diff options
author | citats <citats@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-03-02 23:50:03 +0000 |
---|---|---|
committer | citats <citats@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-03-02 23:50:03 +0000 |
commit | 6b06453f4441d31d72e51bbb2d7558712952819d (patch) | |
tree | 3d184ecc364628a4939e66ea37e70d7b4db33760 /asterisk.c | |
parent | 10462e27399adfbb179d81ec425b0ecb8cbf36c9 (diff) |
Improve restart handling
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@2305 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'asterisk.c')
-rwxr-xr-x | asterisk.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/asterisk.c b/asterisk.c index dd943334e..0f583e0ca 100755 --- a/asterisk.c +++ b/asterisk.c @@ -543,9 +543,11 @@ static void quit_handler(int num, int nice, int safeshutdown, int restart) restartnow = 1; /* If there is a consolethread running send it a SIGHUP so it can execvp, otherwise we can do it ourselves */ - if (consolethread != (pthread_t) -1) + if (consolethread != (pthread_t) -1) { pthread_kill(consolethread, SIGHUP); - else + /* Give the signal handler some time to complete */ + sleep(2); + } else execvp(_argv[0], _argv); } @@ -1471,6 +1473,8 @@ int main(int argc, char *argv[]) ast_verbose(" ]\n"); if (option_verbose || option_console) ast_verbose(term_color(tmp, "Asterisk Ready.\n", COLOR_BRWHITE, COLOR_BLACK, sizeof(tmp))); + if (option_nofork) + consolethread = pthread_self(); fully_booted = 1; pthread_sigmask(SIG_UNBLOCK, &sigs, NULL); #ifdef __AST_DEBUG_MALLOC @@ -1485,8 +1489,6 @@ int main(int argc, char *argv[]) ast_cli_register(&astshutdownwhenconvenient); ast_cli_register(&aborthalt); ast_cli_register(&astbang); - if (option_nofork) - consolethread = pthread_self(); if (option_console) { /* Console stuff now... */ /* Register our quit function */ |