From: Wilfried Göesgens Date: Sat, 20 Jan 2007 19:53:52 +0000 (+0000) Subject: * flush networker caching list on exit X-Git-Tag: v7.86~3640 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=22f45430e27b90cc5dbcca2bd8ee9658821fca23 * flush networker caching list on exit --- diff --git a/citadel/citserver.c b/citadel/citserver.c index a4f5e4cd4..2c3013f43 100644 --- a/citadel/citserver.c +++ b/citadel/citserver.c @@ -54,6 +54,7 @@ #include "control.h" #include "tools.h" #include "euidindex.h" +#include "serv_network.h" #ifndef HAVE_SNPRINTF #include "snprintf.h" @@ -150,9 +151,12 @@ void master_cleanup(int exitcode) { lprintf(CTDL_INFO, "Closing databases\n"); close_databases(); + /* flush the networker stuff */ + destroy_network_queue_room(); + /* Do system-dependent stuff */ sysdep_master_cleanup(); - + #ifdef DEBUG_MEMORY_LEAKS dump_heap(); #endif diff --git a/citadel/serv_network.c b/citadel/serv_network.c index fb18445ed..ca8bfb668 100644 --- a/citadel/serv_network.c +++ b/citadel/serv_network.c @@ -1182,6 +1182,22 @@ void network_queue_room(struct ctdlroom *qrbuf, void *data) { end_critical_section(S_RPLIST); } +void destroy_network_queue_room(void) +{ + struct RoomProcList *cur, *p; + + cur = rplist; + begin_critical_section(S_RPLIST); + while (cur != NULL) + { + p = cur->next; + free (cur); + cur = p; + } + rplist = NULL; + end_critical_section(S_RPLIST); +} + /* * Learn topology from path fields diff --git a/citadel/serv_network.h b/citadel/serv_network.h index 39e04b9d7..92c2c83e4 100644 --- a/citadel/serv_network.h +++ b/citadel/serv_network.h @@ -43,3 +43,4 @@ struct FilterList { extern struct FilterList *filterlist; void network_queue_room(struct ctdlroom *, void *); +void destroy_network_queue_room(void);