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