diff --git a/main/asterisk.c b/main/asterisk.c index 174f9f7bf5ce0e44f78d7380d344df7b866f4cc6..edb3a22da6c44a6d695bd962b9c45965782394e7 100644 --- a/main/asterisk.c +++ b/main/asterisk.c @@ -1791,10 +1791,17 @@ static struct sigaction urg_handler = { static void _hup_handler(int num) { - int a = 0, save_errno = errno; - printf("Received HUP signal -- Reloading configs\n"); - if (restartnow) + int a = 0; + int save_errno = errno; + + if (restartnow) { + if (el) { + el_end(el); + } execvp(_argv[0], _argv); + } + + printf("Received HUP signal -- Reloading configs\n"); sig_flags.need_reload = 1; if (sig_alert_pipe[1] != -1) { if (write(sig_alert_pipe[1], &a, sizeof(a)) < 0) { @@ -2137,7 +2144,7 @@ static void really_quit(int num, shutdown_nice_t niceness, int restart) if (el_hist != NULL) { history_end(el_hist); } - } else { + } else if (!restart) { sig_flags.need_el_end = 1; pthread_kill(consolethread, SIGURG); }