aboutsummaryrefslogtreecommitdiffstats
path: root/asterisk.c
diff options
context:
space:
mode:
authorcitats <citats@f38db490-d61c-443f-a65b-d21fe96a405b>2004-03-02 23:50:03 +0000
committercitats <citats@f38db490-d61c-443f-a65b-d21fe96a405b>2004-03-02 23:50:03 +0000
commit6b06453f4441d31d72e51bbb2d7558712952819d (patch)
tree3d184ecc364628a4939e66ea37e70d7b4db33760 /asterisk.c
parent10462e27399adfbb179d81ec425b0ecb8cbf36c9 (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-xasterisk.c10
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 */