X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fhousekeeping.c;h=bde6634b97689f85da0c64bbf5d9490e4db7bac6;hb=ff9480f7250d97d132a4f4e8623a11db48e07e4c;hp=742fb861bdba9f68eef2e69735c25befb2303d81;hpb=91acd2248c9358e6150c66eeb624d479f24b3941;p=citadel.git diff --git a/citadel/housekeeping.c b/citadel/housekeeping.c index 742fb861b..bde6634b9 100644 --- a/citadel/housekeeping.c +++ b/citadel/housekeeping.c @@ -133,7 +133,7 @@ void check_ref_counts(void) { * only allow housekeeping to execute once per minute, and we only allow one * instance to run at a time. */ -void do_housekeeping(void) { +void *do_housekeeping(void *args) { static int housekeeping_in_progress = 0; static time_t last_timer = 0L; int do_housekeeping_now = 0; @@ -146,29 +146,36 @@ void do_housekeeping(void) { * S_HOUSEKEEPING critical section because it eliminates the need to * potentially have multiple concurrent mutexes in progress. */ - begin_critical_section(S_HOUSEKEEPING); + while (!CtdlThreadCheckStop()) + { + CtdlThreadName("House keeping - sleeping"); + CtdlThreadSleep(1); + +/* begin_critical_section(S_HOUSEKEEPING); if (housekeeping_in_progress == 0) { do_housekeeping_now = 1; housekeeping_in_progress = 1; +*/ now = time(NULL); if ( (now - last_timer) > (time_t)60 ) { do_perminute_housekeeping_now = 1; last_timer = time(NULL); } +/* } end_critical_section(S_HOUSEKEEPING); if (do_housekeeping_now == 0) { return; } - +*/ /* * Ok, at this point we've made the decision to run the housekeeping * loop. Everything below this point is real work. */ /* First, do the "as often as needed" stuff... */ - old_name = CtdlThreadName("House Keeping - Journal"); + CtdlThreadName("House Keeping - Journal"); JournalRunQueue(); CtdlThreadName("House Keeping - EVT_HOUSE"); @@ -176,14 +183,15 @@ void do_housekeeping(void) { /* Then, do the "once per minute" stuff... */ if (do_perminute_housekeeping_now) { + do_perminute_housekeeping_now = 0; cdb_check_handles(); /* suggested by Justin Case */ CtdlThreadName("House Keeping - EVT_TIMER"); PerformSessionHooks(EVT_TIMER); /* Run any timer hooks */ } - + } /* * All done. */ housekeeping_in_progress = 0; - CtdlThreadName(old_name); + return NULL; }