diff --git a/src/sbbs3/sbbscon.c b/src/sbbs3/sbbscon.c index 133e8cd729efe656b68967222f8e6e3588b658a8..c43c63cfe1103f49575912e086907e7b035ab7ac 100644 --- a/src/sbbs3/sbbscon.c +++ b/src/sbbs3/sbbscon.c @@ -781,6 +781,19 @@ static void handle_sigs(void) { int sig; sigset_t sigs; char str[1024]; + FILE* pidfile; + + thread_up(TRUE,TRUE); + + /* Write the standard .pid file if running as a daemon */ + /* Must be here so signals are sent to the correct thread */ + if(is_daemon) { + pidfile=fopen(SBBS_PID_FILE,"w"); + if(pidfile!=NULL) { + fprintf(pidfile,"%d",getpid()); + fclose(pidfile); + } + } /* Set up blocked signals */ sigemptyset(&sigs); @@ -834,7 +847,6 @@ int main(int argc, char** argv) node_t node; #ifdef __unix__ char daemon_type[2]; - FILE* pidfile; struct passwd* pw_entry; struct group* gr_entry; sigset_t sigs; @@ -1366,15 +1378,6 @@ int main(int argc, char** argv) #ifdef __unix__ - /* Write the standard .pid file if running as a daemon */ - if(is_daemon) { - pidfile=fopen(SBBS_PID_FILE,"w"); - if(pidfile!=NULL) { - fprintf(pidfile,"%d",getpid()); - fclose(pidfile); - } - } - /* Set up blocked signals */ sigemptyset(&sigs); sigaddset(&sigs,SIGINT);