diff --git a/src/sbbs3/sbbscon.c b/src/sbbs3/sbbscon.c index b9ca04d3acb3de6bce2bbfb8d1d55b95b4073fb8..cf281c0124ee1655fcc75a22085dd2be4e1bedc4 100644 --- a/src/sbbs3/sbbscon.c +++ b/src/sbbs3/sbbscon.c @@ -738,14 +738,19 @@ static void terminate(void) { ulong count=0; - bbs_terminate(); - ftp_terminate(); + if(bbs_running) + bbs_terminate(); + if(ftp_running) + ftp_terminate(); #ifndef NO_WEB_SERVER - web_terminate(); + if(web_running) + web_terminate(); #endif - mail_terminate(); + if(mail_running) + mail_terminate(); #ifndef NO_SERVICES - services_terminate(); + if(services_running) + services_terminate(); #endif while(bbs_running || ftp_running || web_running || mail_running || services_running) { @@ -883,7 +888,8 @@ void _sighandler_rerun(int sig) static void handle_sigs(void) { - int sig; + int i; + int sig=0; sigset_t sigs; thread_up(NULL,TRUE,TRUE); @@ -909,8 +915,11 @@ static void handle_sigs(void) /* sigaddset(&sigs,SIGPIPE); */ pthread_sigmask(SIG_BLOCK,&sigs,NULL); while(1) { - sigwait(&sigs,&sig); /* wait here until signaled */ - lprintf(LOG_NOTICE," Got signal (%d)",sig); + if((i=sigwait(&sigs,&sig))!=0) { /* wait here until signaled */ + lprintf(LOG_ERR," !sigwait FAILURE (%d), i); + continue; + } + lprintf(LOG_NOTICE," Got signal (%d)", sig); switch(sig) { /* QUIT-type signals */ case SIGINT: @@ -1605,7 +1614,7 @@ int main(int argc, char** argv) } else if(new_uid_name[0]==0) /* check the user arg, if we have uid 0 */ - lputs(LOG_WARNING,"Warning: No user account specified, running as root."); + lputs(LOG_WARNING,"WARNING: No user account specified, running as root."); else {