@ -245,6 +245,7 @@ static char *_argv[256];
static int shuttingdown ;
static int shuttingdown ;
static int restartnow ;
static int restartnow ;
static pthread_t consolethread = AST_PTHREADT_NULL ;
static pthread_t consolethread = AST_PTHREADT_NULL ;
static pthread_t mon_sig_flags ;
static char randompool [ 256 ] ;
static char randompool [ 256 ] ;
@ -1321,14 +1322,15 @@ static void quit_handler(int num, int nice, int safeshutdown, int restart)
ast_module_shutdown ( ) ;
ast_module_shutdown ( ) ;
}
}
if ( ast_opt_console | | ast_opt_remote ) {
if ( ast_opt_console | | ast_opt_remote ) {
pthread_t thisthread = pthread_self ( ) ;
if ( getenv ( " HOME " ) ) {
if ( getenv ( " HOME " ) ) {
snprintf ( filename , sizeof ( filename ) , " %s/.asterisk_history " , getenv ( " HOME " ) ) ;
snprintf ( filename , sizeof ( filename ) , " %s/.asterisk_history " , getenv ( " HOME " ) ) ;
}
}
if ( ! ast_strlen_zero ( filename ) ) {
if ( ! ast_strlen_zero ( filename ) ) {
ast_el_write_history ( filename ) ;
ast_el_write_history ( filename ) ;
}
}
if ( consolethread = = AST_PTHREADT_NULL | | consolethread = = pthread_self ( ) ) {
if ( consolethread = = AST_PTHREADT_NULL | | consolethread = = thisthread | | mon_sig_flags = = thisthread ) {
/* Only end if we are the consolethread , otherwise there's a race with that thread. */
/* Only end if we are the consolethread or signal handler , otherwise there's a race with that thread. */
if ( el ! = NULL ) {
if ( el ! = NULL ) {
el_end ( el ) ;
el_end ( el ) ;
}
}
@ -3290,11 +3292,10 @@ int main(int argc, char *argv[])
/* Register our quit function */
/* Register our quit function */
char title [ 256 ] ;
char title [ 256 ] ;
pthread_attr_t attr ;
pthread_attr_t attr ;
pthread_t dont_care ;
pthread_attr_init ( & attr ) ;
pthread_attr_init ( & attr ) ;
pthread_attr_setdetachstate ( & attr , PTHREAD_CREATE_DETACHED ) ;
pthread_attr_setdetachstate ( & attr , PTHREAD_CREATE_DETACHED ) ;
ast_pthread_create ( & dont_care , & attr , monitor_sig_flags , NULL ) ;
ast_pthread_create ( & mon_sig_flags , & attr , monitor_sig_flags , NULL ) ;
pthread_attr_destroy ( & attr ) ;
pthread_attr_destroy ( & attr ) ;
set_icon ( " Asterisk " ) ;
set_icon ( " Asterisk " ) ;