From 1034d33f851d45ec99dc8a45eb2dede1d63bacb0 Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Wed, 14 Sep 2011 13:34:35 +0000 Subject: [PATCH] Removing of static vars in the Networker - we have to fiddle them through the SpoolControl structure into the ForeachMessage() loop. --- citadel/modules/network/netspool.h | 7 ++++++- citadel/modules/network/serv_netmail.c | 13 ++++++------- citadel/modules/network/serv_netspool.c | 8 +++++++- citadel/modules/network/serv_network.c | 4 +++- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/citadel/modules/network/netspool.h b/citadel/modules/network/netspool.h index a998138a8..fd2b3c209 100644 --- a/citadel/modules/network/netspool.h +++ b/citadel/modules/network/netspool.h @@ -18,10 +18,15 @@ struct SpoolControl { char *misc; FILE *digestfp; int num_msgs_spooled; + + char *working_ignetcfg; + NetMap *the_netmap; }; -void network_spoolout_room(char *room_to_spool); +void network_spoolout_room(char *room_to_spool, + char *working_ignetcfg, + NetMap *the_netmap); void network_do_spoolin(char *working_ignetcfg, NetMap *the_netmap, int *netmap_changed); void network_consolidate_spoolout(char *working_ignetcfg, NetMap *the_netmap); void free_spoolcontrol_struct(SpoolControl **scc); diff --git a/citadel/modules/network/serv_netmail.c b/citadel/modules/network/serv_netmail.c index ce94c1fc4..e46a1dfde 100644 --- a/citadel/modules/network/serv_netmail.c +++ b/citadel/modules/network/serv_netmail.c @@ -89,6 +89,7 @@ #include "context.h" #include "netconfig.h" #include "netspool.h" +#include "netmail.h" #include "ctdl_module.h" @@ -257,9 +258,7 @@ void network_deliver_list(struct CtdlMessage *msg, SpoolControl *sc) { * Spools out one message from the list. */ void network_spool_msg(long msgnum, - void *userdata, - char *working_ignetcfg, - NetMap *the_netmap) + void *userdata) { SpoolControl *sc; int i; @@ -435,8 +434,8 @@ void network_spool_msg(long msgnum, if (is_valid_node(NULL, NULL, msg->cm_fields['N'], - working_ignetcfg, - the_netmap) == 0) + sc->working_ignetcfg, + sc->the_netmap) == 0) { ok_to_participate = 1; } @@ -522,8 +521,8 @@ void network_spool_msg(long msgnum, if (is_valid_node(NULL, NULL, mptr->remote_nodename, - working_ignetcfg, - the_netmap) != 0) + sc->working_ignetcfg, + sc->the_netmap) != 0) { syslog(LOG_ERR, "Invalid node <%s>\n", mptr->remote_nodename); send = 0; diff --git a/citadel/modules/network/serv_netspool.c b/citadel/modules/network/serv_netspool.c index c01402645..f0128f016 100644 --- a/citadel/modules/network/serv_netspool.c +++ b/citadel/modules/network/serv_netspool.c @@ -380,7 +380,10 @@ int is_recipient(SpoolControl *sc, const char *Name) /* * Batch up and send all outbound traffic from the current room */ -void network_spoolout_room(char *room_to_spool) { +void network_spoolout_room(char *room_to_spool, + char *working_ignetcfg, + NetMap *the_netmap) +{ char buf[SIZ]; char filename[PATH_MAX]; SpoolControl *sc; @@ -407,6 +410,9 @@ void network_spoolout_room(char *room_to_spool) { } syslog(LOG_INFO, "Networking started for <%s>\n", CC->room.QRname); + sc->working_ignetcfg = working_ignetcfg; + sc->the_netmap = the_netmap; + /* If there are digest recipients, we have to build a digest */ if (sc->digestrecps != NULL) { sc->digestfp = tmpfile(); diff --git a/citadel/modules/network/serv_network.c b/citadel/modules/network/serv_network.c index 55d8fd370..77a8ab1ce 100644 --- a/citadel/modules/network/serv_network.c +++ b/citadel/modules/network/serv_network.c @@ -458,7 +458,9 @@ void network_do_queue(void) { end_critical_section(S_RPLIST); if (spoolroomname[0] != 0) { - network_spoolout_room(spoolroomname); + network_spoolout_room(spoolroomname, + working_ignetcfg, + the_netmap); } } } -- 2.30.2