From: Wilfried Goesgens Date: Sun, 14 Nov 2010 22:10:57 +0000 (+0100) Subject: Memleak: free the roomlist of the sieve-queued rooms on exit; other tiny leaks. X-Git-Tag: v8.01~587 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=4e12c13641546283c6820ef432e0f36209473acc Memleak: free the roomlist of the sieve-queued rooms on exit; other tiny leaks. --- diff --git a/citadel/modules/sieve/serv_sieve.c b/citadel/modules/sieve/serv_sieve.c index b25b1f709..a8fe4ea38 100644 --- a/citadel/modules/sieve/serv_sieve.c +++ b/citadel/modules/sieve/serv_sieve.c @@ -1284,6 +1284,25 @@ BAIL: res = sieve2_free(&sieve2_context); } +void cleanup_sieve(void) +{ + struct RoomProcList *ptr, *ptr2; + + if (msiv_extensions != NULL) + free(msiv_extensions); + msiv_extensions = NULL; + + begin_critical_section(S_SIEVELIST); + ptr=sieve_list; + while (ptr != NULL) { + ptr2 = ptr->next; + free(ptr); + ptr = ptr2; + } + sieve_list = NULL; + end_critical_section(S_SIEVELIST); +} + int serv_sieve_room(struct ctdlroom *room) { if (!strcasecmp(&room->QRname[11], MAILROOM)) { @@ -1301,6 +1320,7 @@ CTDL_MODULE_INIT(sieve) CtdlRegisterProtoHook(cmd_msiv, "MSIV", "Manage Sieve scripts"); CtdlRegisterRoomHook(serv_sieve_room); CtdlRegisterSessionHook(perform_sieve_processing, EVT_HOUSE); + CtdlRegisterCleanupHook(cleanup_sieve); } /* return our Subversion id for the Log */