#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"
lprintf(CTDL_NOTICE, "\n");
lprintf(CTDL_NOTICE, "\n");
lprintf(CTDL_NOTICE,
- "*** Citadel/UX messaging server engine v%d.%02d ***\n",
+ "*** Citadel server engine v%d.%02d ***\n",
(REV_LEVEL/100), (REV_LEVEL%100));
lprintf(CTDL_NOTICE,
- "Copyright (C) 1987-2003 by the Citadel/UX development team.\n");
+ "Copyright (C) 1987-2004 by the Citadel development team.\n");
lprintf(CTDL_NOTICE,
"This program is distributed under the terms of the GNU "
"General Public License.\n");
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 */