ptr->lcname[ptr->namelen] = '\0';
ptr->key = hashlittle(ptr->lcname, ptr->namelen, 9872345);
+ ptr->lastsent = OneRNCFG->lastsent;
ptr->OneRNCfg = OneRNCFG;
return ptr;
}
struct RoomProcList *ptr;
roomlists *RP = (roomlists*) data;
+ if (!HaveSpoolConfig(OneRNCfg))
+ return;
+
ptr = CreateRoomProcListEntry(qrbuf, OneRNCfg);
ptr->next = RP->rplist;
if (RNCfg == NULL)
return 1;
+ if (!HaveSpoolConfig(RNCfg))
+ return 1;
+
ptr = CreateRoomProcListEntry(qrbuf, RNCfg);
if (ptr == NULL)
return 1;
+ ptr->OneRNCfg = NULL;
begin_critical_section(S_RPLIST);
ptr->next = rplist;
rplist = ptr;
}
-
+void free_network_spoolout_room(SpoolControl *sc)
+{
+ if (sc != NULL)
+ {
+ int i;
+ for (i = subpending; i < maxRoomNetCfg; i++)
+ FreeStrBuf(&sc->Users[i]);
+ free(sc);
+ }
+}
HashList *the_netmap = NULL;
int netmap_changed = 0;
roomlists RL;
+ SpoolControl *sc = NULL;
+ SpoolControl *pSC;
/*
* Run the full set of processing tasks no more frequently
}
if (ptr->namelen > 0) {
- network_spoolout_room(ptr,
- working_ignetcfg,
- the_netmap);
+ InspectQueuedRoom(&sc,
+ ptr,
+ working_ignetcfg,
+ the_netmap);
}
ptr = ptr->next;
}
}
+
+ pSC = sc;
+ while (pSC != NULL)
+ {
+ network_spoolout_room(pSC);
+ pSC = pSC->next;
+ }
+
+ pSC = sc;
+ while (pSC != NULL)
+ {
+ sc = pSC->next;
+ free_network_spoolout_room(pSC);
+ pSC = sc;
+ }
/* If there is anything in the inbound queue, process it */
if (!server_shutting_down) {
network_do_spoolin(working_ignetcfg,