]> code.citadel.org Git - citadel.git/blobdiff - citadel/modules/expire/serv_expire.c
MODULES: add priorities in execution
[citadel.git] / citadel / modules / expire / serv_expire.c
index d1567007455fb65d9979cd19b7c77f36663ee396..e03d43b6adc6b7ac386d28f1199111fbb9e53178 100644 (file)
@@ -706,15 +706,18 @@ int PurgeUseTable(void) {
        cdb_rewind(CDB_USETABLE);
        while(cdbut = cdb_next_item(CDB_USETABLE), cdbut != NULL) {
 
-       /*
-        * TODODRW: change this to create a new function time_t cdb_get_timestamp( struct cdbdata *)
-        * this will release this file from the serv_network.h
-        * Maybe it could be a macro that extracts and casts the reult
-        */
-              memcpy(&ut, cdbut->ptr,
-                    ((cdbut->len > sizeof(struct UseTable)) ?
-                     sizeof(struct UseTable) : cdbut->len));
-              cdb_free(cdbut);
+               /*
+                * TODODRW: change this to create a new function time_t cdb_get_timestamp( struct cdbdata *)
+                * this will release this file from the serv_network.h
+                * Maybe it could be a macro that extracts and casts the reult
+                */
+               if (cdbut->len > sizeof(struct UseTable))
+                       memcpy(&ut, cdbut->ptr, sizeof(struct UseTable));
+               else {
+                       memset(&ut, 0, sizeof(struct UseTable));
+                       memcpy(&ut, cdbut->ptr, cdbut->len);
+               }
+               cdb_free(cdbut);
 
                if ( (time(NULL) - ut.ut_timestamp) > USETABLE_RETAIN ) {
                        uptr = (struct UPurgeList *) malloc(sizeof(struct UPurgeList));
@@ -948,7 +951,7 @@ CTDL_MODULE_INIT(expire)
                CtdlRegisterProtoHook(cmd_tdap, "TDAP", "Manually initiate auto-purger");
                CtdlRegisterProtoHook(cmd_gpex, "GPEX", "Get expire policy");
                CtdlRegisterProtoHook(cmd_spex, "SPEX", "Set expire policy");
-               CtdlRegisterSessionHook(purge_databases, EVT_TIMER);
+               CtdlRegisterSessionHook(purge_databases, EVT_TIMER, PRIO_CLEANUP + 20);
        }
 
        /* return our module name for the log */