We cannot use need_el_end and SIGURG when restarting. Instead we need
to run el_end within the SIGHUP restartnow handler.
ASTERISK-28158
Change-Id: Ia852276363c81bdcf1aa29eb4558c5c2fa1218a0
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) {
if (el_hist != NULL) {
history_end(el_hist);
}
- } else {
+ } else if (!restart) {
sig_flags.need_el_end = 1;
pthread_kill(consolethread, SIGURG);
}