static int restartnow = 0;
static pthread_t consolethread = AST_PTHREADT_NULL;
+static unsigned int need_reload;
+
#if !defined(LOW_MEMORY)
struct file_version {
AST_LIST_ENTRY(file_version) list;
printf("Received HUP signal -- Reloading configs\n");
if (restartnow)
execvp(_argv[0], _argv);
- /* XXX This could deadlock XXX */
- ast_module_reload(NULL);
+ need_reload = 1;
signal(num, hup_handler);
}
}
}
}
+
+ if (need_reload) {
+ need_reload = 0;
+ ast_module_reload(NULL);
+ }
}
printf("\nDisconnected from Asterisk server\n");
}
break;
}
}
+ if (need_reload) {
+ need_reload = 0;
+ ast_module_reload(NULL);
+ }
}
-
}
/* Do nothing */
for(;;) { /* apparently needed for the MACos */
struct pollfd p = { -1 /* no descriptor */, 0, 0 };
poll(&p, 0, -1);
+ /* SIGHUP will cause this to break out of poll() */
+ if (need_reload) {
+ need_reload = 0;
+ ast_module_reload(NULL);
+ }
}
return 0;
}