#ifdef HAVE_PTHREAD_H
#include <pthread.h>
#endif
+#ifdef HAVE_SYS_PRCTL_H
+#include <sys/prctl.h>
+#endif
#include "citadel.h"
#include "server.h"
#include "serv_extensions.h"
CtdlRegisterServiceHook(0,
"citadel.socket",
citproto_begin_session,
- do_command_loop);
+ do_command_loop,
+ do_async_loop);
/*
* Bind the server to our favorite TCP port (usually 504).
CtdlRegisterServiceHook(config.c_port_number,
NULL,
citproto_begin_session,
- do_command_loop);
+ do_command_loop,
+ do_async_loop);
/*
* Load any server-side extensions available here.
size = strlen(bbs_home_directory) + 9;
initialize_server_extensions();
- /*
- * The rescan pipe exists so that worker threads can be woken up and
- * told to re-scan the context list for fd's to listen on. This is
- * necessary, for example, when a context is about to go idle and needs
- * to get back on that list.
- */
- if (pipe(rescan)) {
- lprintf(CTDL_EMERG, "Can't create rescan pipe!\n");
- exit(errno);
- }
-
- init_master_fdset();
-
/*
* Now that we've bound the sockets, change to the BBS user id and its
* corresponding group ids
if (setuid(BBSUID) != 0) {
lprintf(CTDL_CRIT, "setuid() failed: %s\n", strerror(errno));
}
+#if defined (HAVE_SYS_PRCTL_H) && defined (PR_SET_DUMPABLE)
+ prctl(PR_SET_DUMPABLE, 1);
+#endif
}
/* We want to check for idle sessions once per minute */
end_critical_section(S_WORKER_LIST);
master_cleanup();
-
return(0);
}