From b3d358d663acf9a4d593eeca6a85cfc56f6e3d13 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Sat, 9 Mar 2002 16:48:00 +0000 Subject: [PATCH] * Added BMBX to fix a problem --- citadel/ChangeLog | 4 +- citadel/citserver.h | 6 +++ citadel/serv_network.c | 2 + citadel/serv_network.h | 5 --- citadel/serv_upgrade.c | 88 +++++++++++++++++++++++++++++++++++++ citadel/techdoc/session.txt | 5 +++ 6 files changed, 104 insertions(+), 6 deletions(-) diff --git a/citadel/ChangeLog b/citadel/ChangeLog index a5b446573..f14687275 100644 --- a/citadel/ChangeLog +++ b/citadel/ChangeLog @@ -1,4 +1,7 @@ $Log$ + Revision 590.133 2002/03/09 16:47:57 ajc + * Added BMBX to fix a problem + Revision 590.132 2002/03/09 06:18:37 ajc * one more tweak @@ -3408,4 +3411,3 @@ Sat Jul 11 00:20:48 EDT 1998 Nathan Bryant Fri Jul 10 1998 Art Cancro * Initial CVS import - diff --git a/citadel/citserver.h b/citadel/citserver.h index 5b4f7bc1e..245319280 100644 --- a/citadel/citserver.h +++ b/citadel/citserver.h @@ -2,6 +2,12 @@ #include "dynloader.h" +/* Simple linked list structure ... used in a bunch of different places. */ +struct RoomProcList { + struct RoomProcList *next; + char name[ROOMNAMELEN]; +}; + void master_startup (void); void master_cleanup (void); void RemoveContext (struct CitContext *); diff --git a/citadel/serv_network.c b/citadel/serv_network.c index 9b92016c9..02dc5e235 100644 --- a/citadel/serv_network.c +++ b/citadel/serv_network.c @@ -1363,6 +1363,8 @@ void cmd_netp(char *cmdbuf) + + /* * Module entry point */ diff --git a/citadel/serv_network.h b/citadel/serv_network.h index ed65e04bb..9ff68ea97 100644 --- a/citadel/serv_network.h +++ b/citadel/serv_network.h @@ -9,11 +9,6 @@ struct SpoolControl { struct namelist *ignet_push_shares; }; -struct RoomProcList { - struct RoomProcList *next; - char name[ROOMNAMELEN]; -}; - struct NetMap { struct NetMap *next; char nodename[SIZ]; diff --git a/citadel/serv_upgrade.c b/citadel/serv_upgrade.c index 1b03efb2f..1a6323d4f 100644 --- a/citadel/serv_upgrade.c +++ b/citadel/serv_upgrade.c @@ -38,8 +38,10 @@ #include "control.h" #include "dynloader.h" #include "database.h" +#include "room_ops.h" #include "user_ops.h" #include "msgbase.h" +#include "tools.h" #include "serv_upgrade.h" void do_pre555_usersupp_upgrade(void) { @@ -152,8 +154,94 @@ void check_server_upgrades(void) { + + + + + + + +/* + * Back end processing function for cmd_bmbx + */ +void cmd_bmbx_backend(struct quickroom *qrbuf, void *data) { + static struct RoomProcList *rplist = NULL; + struct RoomProcList *ptr; + struct quickroom qr; + + /* Lazy programming here. Call this function as a ForEachRoom backend + * in order to queue up the room names, or call it with a null room + * to make it do the processing. + */ + if (qrbuf != NULL) { + ptr = (struct RoomProcList *) + mallok(sizeof (struct RoomProcList)); + if (ptr == NULL) return; + + safestrncpy(ptr->name, qrbuf->QRname, sizeof ptr->name); + ptr->next = rplist; + rplist = ptr; + return; + } + + while (rplist != NULL) { + + if (lgetroom(&qr, rplist->name) == 0) { + lprintf(9, "Processing <%s>...\n", rplist->name); + if ( (qr.QRflags & QR_MAILBOX) == 0) { + lprintf(9, " -- not a mailbox\n"); + } + else { + + qr.QRgen = time(NULL); + lprintf(9, " -- bumped!\n"); + } + lputroom(&qr); + } + + ptr = rplist; + rplist = rplist->next; + phree(ptr); + } +} + +/* + * quick fix command to bump mailbox generation numbers + */ +void cmd_bmbx(char *argbuf) { + int really_do_this = 0; + + if (CtdlAccessCheck(ac_internal)) return; + really_do_this = extract_int(argbuf, 0); + + if (really_do_this != 1) { + cprintf("%d You didn't really want to do that.\n", OK); + return; + } + + ForEachRoom(cmd_bmbx_backend, NULL); + cmd_bmbx_backend(NULL, NULL); + + cprintf("%d Mailbox generation numbers bumped.\n", OK); + return; + +} + + + + + + + + + + + + + char *Dynamic_Module_Init(void) { check_server_upgrades(); + CtdlRegisterProtoHook(cmd_bmbx, "BMBX", "Bump mailboxes"); return "$Id$"; } diff --git a/citadel/techdoc/session.txt b/citadel/techdoc/session.txt index 3860b60b2..36fb5c109 100644 --- a/citadel/techdoc/session.txt +++ b/citadel/techdoc/session.txt @@ -1897,6 +1897,11 @@ returns OK followed by a Citadel address if there is a match, otherwise it returns ERROR+NOT_LOGGED_IN. + BMBX (Bump MailBoX generation numbers) + + This is a sooper-seekrit undocumented command. + + ASYN (ASYNchronous message support) Negotiate the use of asynchronous, or unsolicited, protocol messages. The -- 2.30.2