*
*/
+#ifdef DLL_EXPORT
+#define IN_LIBCIT
+#endif
+
#include "sysdep.h"
#include <stdlib.h>
#include <unistd.h>
#include "tools.h"
#include "citadel.h"
#include "server.h"
+#include "serv_extensions.h"
#include "citserver.h"
#include "config.h"
#include "housekeeping.h"
putfloor(&flbuf, a);
}
+ cdb_begin_transaction();
ForEachRoom(check_ref_counts_backend, NULL);
+ cdb_end_transaction();
}
/*
*/
void do_housekeeping(void) {
static int housekeeping_in_progress = 0;
- time_t last_timer = 0L;
+ static time_t last_timer = 0L;
int do_housekeeping_now = 0;
+ time_t now;
/*
* We do it this way instead of wrapping the whole loop in an
* potentially have multiple concurrent mutexes in progress.
*/
begin_critical_section(S_HOUSEKEEPING);
- if ( ((time(NULL) - last_timer) > 60L)
- && (housekeeping_in_progress == 0) ) {
- do_housekeeping_now = 1;
- housekeeping_in_progress = 1;
- last_timer = time(NULL);
+ now = time(NULL);
+ if ( (now - last_timer) > (time_t)60 ) {
+ if (housekeeping_in_progress == 0) {
+ do_housekeeping_now = 1;
+ housekeeping_in_progress = 1;
+ last_timer = time(NULL);
+ }
}
end_critical_section(S_HOUSEKEEPING);
- if (do_housekeeping_now == 0) return;
+
+ if (do_housekeeping_now == 0) {
+ return;
+ }
/*
* Ok, at this point we've made the decision to run the housekeeping