]> code.citadel.org Git - citadel.git/blobdiff - citadel/citserver.c
fix all the <time.h> vs. <sys/time.h> issues, hopefully
[citadel.git] / citadel / citserver.c
index 5b671d0fba90ad7d8dcf35faf7902677a6404ae9..919156a6a4da8cf039cca909439df48b3b45809c 100644 (file)
 #include <stdio.h>
 #include <fcntl.h>
 #include <signal.h>
-#include <time.h>
+
+#if TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# if HAVE_SYS_TIME_H
+#  include <sys/time.h>
+# else
+#  include <time.h>
+# endif
+#endif
+
 #include <ctype.h>
 #include <string.h>
 #include <errno.h>
@@ -21,7 +32,6 @@
 #include <netdb.h>
 #include <sys/types.h>
 #include <sys/socket.h>
-#include <sys/time.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include "citadel.h"
@@ -65,10 +75,10 @@ void master_startup(void) {
        check_ref_counts();
 
        lprintf(7, "Creating base rooms (if necessary)\n");
-       create_room(BASEROOM,           0, "", 0);
-       create_room(AIDEROOM,           3, "", 0);
-       create_room(SYSCONFIGROOM,      3, "", 0);
-       create_room(config.c_twitroom,  0, "", 0);
+       create_room(BASEROOM,           0, "", 0, 1);
+       create_room(AIDEROOM,           3, "", 0, 1);
+       create_room(SYSCONFIGROOM,      3, "", 0, 1);
+       create_room(config.c_twitroom,  0, "", 0, 1);
 
        lprintf(7, "Seeding the pseudo-random number generator...\n");
        gettimeofday(&tv, NULL);
@@ -80,18 +90,12 @@ void master_startup(void) {
 
 /*
  * Cleanup routine to be called when the server is shutting down.
+ * WARNING: It's no longer safe to call this function to force a shutdown.
+ * Instead, set time_to_die = 1.
  */
 void master_cleanup(void) {
        struct CleanupFunctionHook *fcn;
 
-       /* Cancel all running sessions */
-       lprintf(7, "Cancelling running sessions...\n");
-
-/* FIXME do something here
-       while (ContextList != NULL) {
-               }
- */
-
        /* Run any cleanup routines registered by loadable modules */
        for (fcn = CleanupHookTable; fcn != NULL; fcn = fcn->next) {
                (*fcn->h_function_pointer)();
@@ -713,7 +717,7 @@ void cmd_down(void) {
        if (CtdlAccessCheck(ac_aide)) return;
 
        cprintf("%d Shutting down server.  Goodbye.\n", OK);
-       master_cleanup();
+       time_to_die = 1;
        }
 
 /*
@@ -1197,6 +1201,10 @@ void do_command_loop(void) {
                cmd_conf(&cmdbuf[5]);
                }
 
+       else if (!strncasecmp(cmdbuf, "SEEN", 4)) {
+               cmd_seen(&cmdbuf[5]);
+               }
+
 #ifdef DEBUG_MEMORY_LEAKS
        else if (!strncasecmp(cmdbuf, "LEAK", 4)) {
                dump_tracked();