fix some more memleaks.
authorWilfried Goesgens <dothebart@citadel.org>
Mon, 17 Oct 2011 22:19:14 +0000 (00:19 +0200)
committerWilfried Goesgens <dothebart@citadel.org>
Mon, 17 Oct 2011 22:19:14 +0000 (00:19 +0200)
citadel/modules/network/serv_networkclient.c
citadel/modules/rssclient/serv_rssclient.c

index 66d65cc0f287f9eb6b06367a75b83e991552d441..0f1f856f6132b732389d85b094c5a4a9f34798b2 100644 (file)
@@ -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;
                                }
index 9973a1e3404dc493931790aa5e78d124a3599908..e5060ec457a69d5095d1a6696a1a2ff756865977 100644 (file)
@@ -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);