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);