X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fexpire%2Fserv_expire.c;h=00466cf77c0274eccbbaa35f71e27c0585ec04fe;hb=8c47559cb5ae97ec0fa35660ee16fd61a9451c72;hp=eaffd921f5aa84f80b9c72d6293efb3c79165cf3;hpb=6f7bef8170f504b9e793ffda404d7f94f7cda79c;p=citadel.git diff --git a/citadel/modules/expire/serv_expire.c b/citadel/modules/expire/serv_expire.c index eaffd921f..00466cf77 100644 --- a/citadel/modules/expire/serv_expire.c +++ b/citadel/modules/expire/serv_expire.c @@ -3,10 +3,25 @@ * * This module handles the expiry of old messages and the purging of old users. * - */ - - -/* + * You might also see this module affectionately referred to as the DAP (the Dreaded Auto-Purger). + * + * Copyright (c) 1988-2009 by citadel.org (Art Cancro, Wilifried Goesgens, and others) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * * A brief technical discussion: * * Several of the purge operations found in this module operate in two @@ -66,7 +81,7 @@ #include "msgbase.h" #include "user_ops.h" #include "control.h" -#include "serv_network.h" /* Needed for defenition of UseTable */ +#include "serv_network.h" /* Needed for definition of UseTable */ #include "threads.h" #include "ctdl_module.h" @@ -530,7 +545,8 @@ int PurgeUsers(void) { ForEachUser(do_uid_user_purge, NULL); break; default: - CtdlLogPrintf(CTDL_DEBUG, "Unknown authentication mode!\n"); + CtdlLogPrintf(CTDL_DEBUG, "User purge for auth mode %d is not implemented.\n", + config.c_auth_mode); break; } @@ -802,8 +818,9 @@ int PurgeStaleOpenIDassociations(void) { char *deleteme = NULL; long len; void *Value; - char *Key; + const char *Key; int num_deleted = 0; + long usernum = 0L; keys = NewHash(1, NULL); if (!keys) return(0); @@ -812,8 +829,7 @@ int PurgeStaleOpenIDassociations(void) { cdb_rewind(CDB_OPENID); while (cdboi = cdb_next_item(CDB_OPENID), cdboi != NULL) { if (cdboi->len > sizeof(long)) { - long usernum; - usernum = ((long)*(cdboi->ptr)); + memcpy(&usernum, cdboi->ptr, sizeof(long)); if (getuserbynumber(&usbuf, usernum) != 0) { deleteme = strdup(cdboi->ptr + sizeof(long)), Put(keys, deleteme, strlen(deleteme), deleteme, generic_free_handler); @@ -824,7 +840,7 @@ int PurgeStaleOpenIDassociations(void) { /* Go through the hash list, deleting keys we stored in it */ - HashPos = GetNewHashPos(); + HashPos = GetNewHashPos(keys, 0); while (GetNextHashPos(keys, HashPos, &len, &Key, &Value)!=0) { CtdlLogPrintf(CTDL_DEBUG, "Deleting associated OpenID <%s>\n", Value); @@ -935,6 +951,10 @@ void *purge_databases(void *args) /*****************************************************************************/ +/* The FSCK command has been removed because people were misusing it */ + +#if 0 + void do_fsck_msg(long msgnum, void *userdata) { struct ctdlroomref *ptr; @@ -1013,6 +1033,7 @@ void cmd_fsck(char *argbuf) { } +#endif /* end of commented-out fsck cmd */ /* * Manually initiate a run of The Dreaded Auto-Purger (tm) @@ -1030,7 +1051,7 @@ CTDL_MODULE_INIT(expire) { if (!threading) { - CtdlRegisterProtoHook(cmd_fsck, "FSCK", "Check message ref counts"); + /* CtdlRegisterProtoHook(cmd_fsck, "FSCK", "Check message ref counts"); */ CtdlRegisterProtoHook(cmd_tdap, "TDAP", "Manually initiate auto-purger"); } else