]> code.citadel.org Git - citadel.git/blobdiff - citadel/server_main.c
ctdl_thread_internal_gc() now follows rule for critical_section
[citadel.git] / citadel / server_main.c
index a18c50266547bde8af55e318bdaf3aee954dde9f..67102a2061e338458fd318b6fa05d7406c00f784 100644 (file)
@@ -354,9 +354,15 @@ int main(int argc, char **argv)
                ctdl_thread_internal_calc_loadavg();
                end_critical_section(S_THREAD_LIST);
                CtdlThreadSleep(1);
+               begin_critical_section(S_THREAD_LIST);
                ctdl_internal_thread_gc();
+               end_critical_section(S_THREAD_LIST);
                if (CtdlThreadGetCount() <= 1) // Shutting down clean up the garbage collector
+               {
+                       begin_critical_section(S_THREAD_LIST);
                        ctdl_internal_thread_gc();
+                       end_critical_section(S_THREAD_LIST);
+               }
        }
        /*
         * If the above loop exits we must be shutting down since we obviously have no threads