diff --git a/src/sbbs3/sbbscon.c b/src/sbbs3/sbbscon.c
index 9e7018cee3491e9a8c1d5125ace76ea0500d856c..d0fa9a5018096b87841cdbc850c487220e5e2585 100644
--- a/src/sbbs3/sbbscon.c
+++ b/src/sbbs3/sbbscon.c
@@ -1582,6 +1582,10 @@ int main(int argc, char** argv)
 	SetConsoleCtrlHandler(ControlHandler, TRUE /* Add */);
 #elif defined(__unix__)
 	/* Set up blocked signals */
+#ifdef _THREAD_SUID_BROKEN
+	sigfillset(&sigs);
+	sigprocmask(SIG_BLOCK,&sigs,NULL);
+#else
 	sigemptyset(&sigs);
 	sigaddset(&sigs,SIGINT);
 	sigaddset(&sigs,SIGQUIT);
@@ -1593,6 +1597,7 @@ int main(int argc, char** argv)
 	pthread_sigmask(SIG_BLOCK,&sigs,NULL);
     signal(SIGPIPE, SIG_IGN);       /* Ignore "Broken Pipe" signal (Also used for broken socket etc.) */
     signal(SIGALRM, SIG_IGN);       /* Ignore "Alarm" signal */
+#endif
 	_beginthread((void(*)(void*))handle_sigs,0,NULL);
 	if(new_uid_name[0]!=0) {        /*  check the user arg, if we have uid 0 */
 		/* Can't recycle servers (re-bind ports) as non-root user */