From 85e5fe9827eba80ad0f22fee7d32ade4bc1c9d27 Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Thu, 17 Nov 2005 05:58:17 +0000
Subject: [PATCH] Taht didn't work... try blocking ALL signals the calling
 sigwait() on the handled ones.

---
 src/sbbs3/sbbscon.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/src/sbbs3/sbbscon.c b/src/sbbs3/sbbscon.c
index 5d2bb222b2..9e7018cee3 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);
-- 
GitLab