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 */