diff --git a/src/sbbs3/sbbscon.c b/src/sbbs3/sbbscon.c index e8d13bab8f9c0262f81211f1956c8df7a41324d1..16c2a7f321801c56d22d3cffb6021b93ebab9fd9 100644 --- a/src/sbbs3/sbbscon.c +++ b/src/sbbs3/sbbscon.c @@ -934,6 +934,13 @@ static void handle_sigs(void) 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",i); + memcpy(&moresigs, &sigs, sizeof(moresigs)); + sigaddset(&sigs, sig); + pthread_sigmask(SIG_BLOCK,&moresigs,NULL); + } continue; } lprintf(LOG_NOTICE," Got signal (%d)", sig);