]> code.citadel.org Git - citadel.git/blobdiff - citadel/housekeeping.c
* setup.c: default value for maxsessions is now 0 (no limit)
[citadel.git] / citadel / housekeeping.c
index 2458fa861ff20e128f802bfcbeeb3a1e9fa81d62..e8c060c7bf0d075fa0e075fc81f02a332ea111b4 100644 (file)
@@ -2,6 +2,7 @@
  * This file contains housekeeping tasks which periodically
  * need to be executed.
  *
+ * $Id$
  */
 
 #include <stdlib.h>
@@ -11,6 +12,7 @@
 #include <ctype.h>
 #include <string.h>
 #include <errno.h>
+#include <limits.h>
 #include <pthread.h>
 #include "citadel.h"
 #include "server.h"
 void terminate_idle_sessions(void) {
        struct CitContext *ccptr;
        time_t now;
-       
-       time(&now);
+
+START_OVER:
+       now = time(NULL);
        for (ccptr = ContextList; ccptr != NULL; ccptr = ccptr->next) {
                if (  (ccptr!=CC)
                   && (config.c_sleeping > 0)
                   && (now - (ccptr->lastcmd) > config.c_sleeping) ) {
-                       lprintf(3, "Session %d timed out\n", ccptr->cs_pid);
+                       lprintf(3, "Session %d timed out.  Terminating it...\n",
+                               ccptr->cs_pid);
                        kill_session(ccptr->cs_pid);
-                       ccptr = ContextList;
+                       lprintf(9, "...done terminating it.\n");
+                       goto START_OVER;
                        }
                }
        }
@@ -48,12 +53,14 @@ void terminate_idle_sessions(void) {
  */
 void do_housekeeping(void) {
 
+       lprintf(9, "--- begin housekeeping ---\n");
        begin_critical_section(S_HOUSEKEEPING);
        /*
         * Terminate idle sessions.
         */
        lprintf(7, "Calling terminate_idle_sessions()\n");
        terminate_idle_sessions();
+       lprintf(9, "Done with terminate_idle_sessions()\n");
 
        /*
         * If the server is scheduled to shut down the next time all
@@ -64,6 +71,7 @@ void do_housekeeping(void) {
                master_cleanup();
                }
        end_critical_section(S_HOUSEKEEPING);
+       lprintf(9, "--- end housekeeping ---\n");
        }