add shutdown handlers for libcurl wrapper
[citadel.git] / citadel / modules / rssclient / serv_rssclient.c
index 24e3d6097f1c1c29aa5deb2001546e721a9e0dde..79ba35c6058fdadd06a591a3f86f21b09080230f 100644 (file)
@@ -69,7 +69,7 @@ HashList *RSSQueueRooms = NULL; /* rss_room_counter */
 HashList *RSSFetchUrls = NULL; /* -> rss_aggregator; ->RefCount access to be locked too. */
 
 eNextState RSSAggregatorTerminate(AsyncIO *IO);
-
+eNextState RSSAggregatorShutdownAbort(AsyncIO *IO);
 struct CitContext rss_CC;
 
 struct rssnetcfg *rnclist = NULL;
@@ -475,7 +475,8 @@ int rss_do_fetching(rss_aggregator *Cfg)
                          NULL,
                          "Citadel RSS Client",
                          ParseRSSReply, 
-                         RSSAggregatorTerminate))
+                         RSSAggregatorTerminate,
+                         RSSAggregatorShutdownAbort))
        {
                syslog(LOG_DEBUG, "Unable to initialize libcurl.\n");
                return 0;
@@ -532,6 +533,21 @@ eNextState RSSAggregatorTerminate(AsyncIO *IO)
        EVM_syslog(LOG_DEBUG, "RSS: Terminating.\n");
 
 
+       UnlinkRSSAggregator(rncptr);
+       return eAbort;
+}
+eNextState RSSAggregatorShutdownAbort(AsyncIO *IO)
+{
+       const char *pUrl;
+       rss_aggregator *rncptr = (rss_aggregator *)IO->Data;
+
+       pUrl = IO->ConnectMe->PlainUrl;
+       if (pUrl == NULL)
+               pUrl = "";
+
+       EV_syslog(LOG_DEBUG, "RSS: Aborting by shutdown: %s.\n", pUrl);
+
+
        UnlinkRSSAggregator(rncptr);
        return eAbort;
 }