diff --git a/src/sbbs3/sbbscon.c b/src/sbbs3/sbbscon.c index 5d2bb222b282bf559c2b94b5dcc9478e5a81f03f..9e7018cee3491e9a8c1d5125ace76ea0500d856c 100644 --- a/src/sbbs3/sbbscon.c +++ b/src/sbbs3/sbbscon.c @@ -907,6 +907,7 @@ static void handle_sigs(void) int i; int sig=0; sigset_t sigs; + sigset_t allsigs; thread_up(NULL,TRUE,TRUE); @@ -922,6 +923,10 @@ static void handle_sigs(void) } /* Set up blocked signals */ + sigfillset(&allsigs); + pthread_sigmask(SIG_BLOCK,&allsigs,NULL); + + /* Set up handled/waited sigs */ sigemptyset(&sigs); sigaddset(&sigs,SIGINT); sigaddset(&sigs,SIGQUIT); @@ -930,17 +935,9 @@ static void handle_sigs(void) sigaddset(&sigs,SIGHUP); sigaddset(&sigs,SIGALRM); /* sigaddset(&sigs,SIGPIPE); */ - pthread_sigmask(SIG_BLOCK,&sigs,NULL); while(1) { if((i=sigwait(&sigs,&sig))!=0) { /* wait here until signaled */ lprintf(LOG_ERR," !sigwait FAILURE (%d)", i); - if(i==EINTR) { - sigset_t moresigs; - lprintf(LOG_ERR," Adding signal %d to blocked set",sig); - memcpy(&moresigs, &sigs, sizeof(moresigs)); - sigaddset(&sigs, sig); - pthread_sigmask(SIG_BLOCK,&moresigs,NULL); - } continue; } lprintf(LOG_NOTICE," Got signal (%d)", sig);