}
else if (!strncmp(argv[a], "-h", 2)) {
- safestrncpy(bbs_home_directory, &argv[a][2],
- sizeof bbs_home_directory);
+ safestrncpy(ctdl_home_directory, &argv[a][2],
+ sizeof ctdl_home_directory);
home_specified = 1;
}
* Load any server-side extensions available here.
*/
lprintf(CTDL_INFO, "Initializing server extensions\n");
- size = strlen(bbs_home_directory) + 9;
+ size = strlen(ctdl_home_directory) + 9;
initialize_server_extensions();
/*
- * Now that we've bound the sockets, change to the BBS user id and its
+ * Now that we've bound the sockets, change to the Citadel user id and its
* corresponding group ids
*/
if (drop_root_perms) {
- if ((pw = getpwuid(BBSUID)) == NULL)
+ if ((pw = getpwuid(CTDLUID)) == NULL)
lprintf(CTDL_CRIT, "WARNING: getpwuid(%ld): %s\n"
- "Group IDs will be incorrect.\n", (long)BBSUID,
+ "Group IDs will be incorrect.\n", (long)CTDLUID,
strerror(errno));
else {
initgroups(pw->pw_name, pw->pw_gid);
lprintf(CTDL_CRIT, "setgid(%ld): %s\n", (long)pw->pw_gid,
strerror(errno));
}
- lprintf(CTDL_INFO, "Changing uid to %ld\n", (long)BBSUID);
- if (setuid(BBSUID) != 0) {
+ lprintf(CTDL_INFO, "Changing uid to %ld\n", (long)CTDLUID);
+ if (setuid(CTDLUID) != 0) {
lprintf(CTDL_CRIT, "setuid() failed: %s\n", strerror(errno));
}
#if defined (HAVE_SYS_PRCTL_H) && defined (PR_SET_DUMPABLE)
/*
* Now create a bunch of worker threads.
*/
- lprintf(CTDL_DEBUG, "Starting %d worker threads\n", config.c_min_workers-1);
+ lprintf(CTDL_DEBUG, "Starting %d worker threads\n",
+ config.c_min_workers-1);
begin_critical_section(S_WORKER_LIST);
for (i=0; i<(config.c_min_workers-1); ++i) {
create_worker();
}
end_critical_section(S_WORKER_LIST);
- /* Now this thread can become a worker as well. */
- worker_thread(NULL);
+ /* Create the indexer thread. */
+ create_maintenance_threads();
- /* Server is exiting. Wait for workers to shutdown. */
- lprintf(CTDL_INFO, "Server is shutting down.\n");
+ /* This thread is now useless. It can't be turned into a worker
+ * thread because its stack is too small, but it can't be killed
+ * either because the whole server process would exit. So we just
+ * join to the first worker thread and exit when it exits.
+ */
+ pthread_join(worker_list->tid, NULL);
master_cleanup(0);
return(0);
}