From aab1bab5b2fb69f588df91896e4eb65bd5844bfd Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Tue, 18 Oct 2011 00:19:14 +0200 Subject: [PATCH] fix some more memleaks. --- citadel/modules/network/serv_networkclient.c | 14 +++++++------- citadel/modules/rssclient/serv_rssclient.c | 14 +++++++++++--- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/citadel/modules/network/serv_networkclient.c b/citadel/modules/network/serv_networkclient.c index 66d65cc0f..0f1f856f6 100644 --- a/citadel/modules/network/serv_networkclient.c +++ b/citadel/modules/network/serv_networkclient.c @@ -147,7 +147,7 @@ eNextState FinalizeNetworker(AsyncIO *IO) { AsyncNetworker *NW = (AsyncNetworker *)IO->Data; - network_talking_to(ChrPtr(NW->node), NTT_REMOVE); + network_talking_to(SKEY(NW->node), NTT_REMOVE); DeleteNetworker(IO->Data); return eAbort; @@ -274,7 +274,7 @@ eNextState NWC_SendREAD(AsyncNetworker *NW) */ if (server_shutting_down) { - close(NW->IO.IOB.OtherFD); + FDIOBufferDelete(&NW->IO.IOB); unlink(ChrPtr(NW->tempFileName)); return eAbort; } @@ -319,7 +319,7 @@ eNextState NWC_ReadREADBlob(AsyncNetworker *NW) { NW->State ++; - close(NW->IO.IOB.OtherFD); + FDIOBufferDelete(&NW->IO.IOB); if (link(ChrPtr(NW->SpoolFileName), ChrPtr(NW->tempFileName)) != 0) { syslog(LOG_ALERT, @@ -346,7 +346,7 @@ eNextState NWC_ReadREADBlobDone(AsyncNetworker *NW) { NW->State ++; - close(NW->IO.IOB.OtherFD); + FDIOBufferDelete(&NW->IO.IOB); if (link(ChrPtr(NW->SpoolFileName), ChrPtr(NW->tempFileName)) != 0) { syslog(LOG_ALERT, @@ -463,7 +463,7 @@ eNextState NWC_SendBlobDone(AsyncNetworker *NW) { NW->State ++; - close(NW->IO.IOB.OtherFD); + FDIOBufferDelete(&NW->IO.IOB); rc = NWC_DispatchWriteDone(&NW->IO); NW->State --; return rc; @@ -897,9 +897,9 @@ void network_poll_other_citadel_nodes(int full_poll, char *working_ignetcfg) ChrPtr(NW->secret), ChrPtr(NW->host), ChrPtr(NW->port)); - if (!network_talking_to(ChrPtr(NW->node), NTT_CHECK)) + if (!network_talking_to(SKEY(NW->node), NTT_CHECK)) { - network_talking_to(ChrPtr(NW->node), NTT_ADD); + network_talking_to(SKEY(NW->node), NTT_ADD); RunNetworker(NW); continue; } diff --git a/citadel/modules/rssclient/serv_rssclient.c b/citadel/modules/rssclient/serv_rssclient.c index 9973a1e34..e5060ec45 100644 --- a/citadel/modules/rssclient/serv_rssclient.c +++ b/citadel/modules/rssclient/serv_rssclient.c @@ -68,6 +68,7 @@ HashList *RSSFetchUrls = NULL; /* -> rss_aggregator; ->RefCount access to be loc eNextState RSSAggregatorTerminate(AsyncIO *IO); +struct CitContext rss_CC; struct rssnetcfg *rnclist = NULL; void AppendLink(StrBuf *Message, StrBuf *link, StrBuf *LinkTitle, const char *Title) @@ -242,7 +243,7 @@ void RSSQueueSaveMessage(struct CtdlMessage *Msg, struct recptypes *recp, StrBuf Ctx->Cfg = Cfg; Ctx->recp = recp; Ctx->IO.Data = Ctx; - Ctx->IO.CitContext = CloneContext(CC); + Ctx->IO.CitContext = CloneContext(&rss_CC); Ctx->IO.Terminate = FreeNetworkSaveMessage; Ctx->IO.ShutdownAbort = AbortNetworkSaveMessage; QueueDBOperation(&Ctx->IO, RSS_FetchNetworkUsetableEntry); @@ -433,7 +434,7 @@ int rss_do_fetching(rss_aggregator *Cfg) memset(ri, 0, sizeof(rss_item)); Cfg->Item = ri; IO = &Cfg->IO; - IO->CitContext = CloneContext(CC); + IO->CitContext = CloneContext(&rss_CC); IO->Data = Cfg; @@ -465,8 +466,9 @@ void DeleteRssCfg(void *vptr) FreeStrBuf(&rncptr->rooms); FreeStrBuf(&rncptr->CData); FreeStrBuf(&rncptr->Key); - + FreeStrBuf(&rncptr->IO.HttpReq.ReplyData); DeleteHash(&rncptr->OtherQRnumbers); + FreeURL(&rncptr->IO.ConnectMe); if (rncptr->Item != NULL) { @@ -638,6 +640,11 @@ void rssclient_scan_room(struct ctdlroom *qrbuf, void *data) use_this_rncptr->roomlist_parts++; } pthread_mutex_unlock(&RSSQueueMutex); + + + FreeStrBuf(&rncptr->Url); + free(rncptr); + rncptr = NULL; continue; } pthread_mutex_unlock(&RSSQueueMutex); @@ -725,6 +732,7 @@ CTDL_MODULE_INIT(rssclient) { if (threading) { + CtdlFillSystemContext(&rss_CC, "rssclient"); pthread_mutex_init(&RSSQueueMutex, NULL); RSSQueueRooms = NewHash(1, lFlathash); RSSFetchUrls = NewHash(1, NULL); -- 2.30.2