]> code.citadel.org Git - citadel.git/blobdiff - citadel/modules/rssclient/serv_rssclient.c
rssclient.c - dont compare null strings
[citadel.git] / citadel / modules / rssclient / serv_rssclient.c
index c2dfa85e1ad1149aff91919df492ff68edade82a..b9742266b7c654cf2f14895aee596b8ac196ecc7 100644 (file)
@@ -73,6 +73,26 @@ int RSSClientDebugEnabled = 0;
 
 #define DBGLOG(LEVEL) if ((LEVEL != LOG_DEBUG) || (RSSClientDebugEnabled != 0))
 
+#define EVRSSC_syslog(LEVEL, FORMAT, ...)                              \
+       DBGLOG(LEVEL) syslog(LEVEL,                                     \
+                            "%s[%ld]CC[%d][%ld]RSS" FORMAT,            \
+                            IOSTR, IO->ID, CCID, N, __VA_ARGS__)
+
+#define EVRSSCM_syslog(LEVEL, FORMAT)                                  \
+       DBGLOG(LEVEL) syslog(LEVEL,                                     \
+                            "%s[%ld]CC[%d][%ld]RSS" FORMAT,            \
+                            IOSTR, IO->ID, CCID, N)
+
+#define EVRSSQ_syslog(LEVEL, FORMAT, ...)                              \
+       DBGLOG(LEVEL) syslog(LEVEL, "RSS" FORMAT,                       \
+                            __VA_ARGS__)
+#define EVRSSQM_syslog(LEVEL, FORMAT)                  \
+       DBGLOG(LEVEL) syslog(LEVEL, "RSS" FORMAT)
+
+#define EVRSSCSM_syslog(LEVEL, FORMAT)                                 \
+       DBGLOG(LEVEL) syslog(LEVEL, "%s[%ld][%ld]RSS" FORMAT,           \
+                            IOSTR, IO->ID, N)
+
 typedef enum _RSSState {
        eRSSCreated,
        eRSSFetching,
@@ -202,7 +222,7 @@ void DeleteRssCfg(void *vptr)
        AsyncIO *IO = &RSSAggr->IO;
 
        if (IO->CitContext != NULL) {
-               syslog(LOG_DEBUG, "RSS: destroying\n");
+               EVRSSCM_syslog(LOG_DEBUG, "RSS: destroying");
        }
 
        FreeStrBuf(&RSSAggr->Url);
@@ -234,7 +254,7 @@ eNextState RSSAggregator_Terminate(AsyncIO *IO)
 {
        rss_aggregator *RSSAggr = (rss_aggregator *)IO->Data;
 
-       syslog(LOG_DEBUG, "RSS: Terminating.");
+       EVRSSCM_syslog(LOG_DEBUG, "RSS: Terminating.");
 
        StopCurlWatchers(IO);
        UnlinkRSSAggregator(RSSAggr);
@@ -245,7 +265,7 @@ eNextState RSSAggregator_TerminateDB(AsyncIO *IO)
 {
        rss_aggregator *RSSAggr = (rss_aggregator *)IO->Data;
 
-       syslog(LOG_DEBUG, "RSS: Terminating.");
+       EVRSSCM_syslog(LOG_DEBUG, "RSS: Terminating.");
 
 
        StopDBWatchers(&RSSAggr->IO);
@@ -262,7 +282,7 @@ eNextState RSSAggregator_ShutdownAbort(AsyncIO *IO)
        if (pUrl == NULL)
                pUrl = "";
 
-       syslog(LOG_DEBUG, "RSS: Aborting by shutdown: %s.", pUrl);
+       EVRSSC_syslog(LOG_DEBUG, "RSS: Aborting by shutdown: %s.", pUrl);
 
        StopCurlWatchers(IO);
        UnlinkRSSAggregator(RSSAggr);
@@ -302,7 +322,7 @@ int rss_format_item(AsyncIO *IO, networker_save_message *SaveMsg)
            StrLength(SaveMsg->reLinkTitle) +
            StrLength(SaveMsg->title) == 0)
        {
-               syslog(LOG_INFO, "Refusing to save empty message.");
+               EVRSSCM_syslog(LOG_INFO, "Refusing to save empty message.");
                return 0;
        }
 
@@ -416,13 +436,10 @@ eNextState RSSSaveMessage(AsyncIO *IO)
 
        if (rss_format_item(IO, RSSAggr->ThisMsg))
        {
-               CM_SetAsFieldSB(&RSSAggr->ThisMsg->Msg, eMesageText,
-                                      &RSSAggr->ThisMsg->Message);
-
+               CM_SetAsFieldSB(&RSSAggr->ThisMsg->Msg, eMesageText, &RSSAggr->ThisMsg->Message);
                CtdlSubmitMsg(&RSSAggr->ThisMsg->Msg, &RSSAggr->recp, NULL, 0);
                
                /* write the uidl to the use table so we don't store this item again */
-               
                CheckIfAlreadySeen("RSS Item Insert", RSSAggr->ThisMsg->MsgGUID, EvGetNow(IO), 0, eWrite, CCID, IO->ID);
        }
 
@@ -456,7 +473,10 @@ eNextState RSS_FetchNetworkUsetableEntry(AsyncIO *IO)
        if (seenstamp != 0)
        {
                /* Item has already been seen */
-               syslog(LOG_DEBUG, "%s has already been seen - %ld < %ld", ChrPtr(Ctx->ThisMsg->MsgGUID), seenstamp, antiExpire);
+               EVRSSC_syslog(LOG_DEBUG,
+                             "%s has already been seen - %ld < %ld",
+                             ChrPtr(Ctx->ThisMsg->MsgGUID),
+                             seenstamp, antiExpire);
 
                SetRSSState(IO, eRSSParsing);
 
@@ -474,7 +494,7 @@ eNextState RSS_FetchNetworkUsetableEntry(AsyncIO *IO)
 #endif
        {
                /* Item has already been seen */
-               syslog(LOG_DEBUG,
+               EVRSSC_syslog(LOG_DEBUG,
                              "%s Parsing - %ld >= %ld",
                              ChrPtr(Ctx->ThisMsg->MsgGUID),
                              seenstamp, antiExpire);
@@ -533,7 +553,8 @@ eNextState RSSAggregator_AnalyseReply(AsyncIO *IO)
                SetRSSState(IO, eRSSFailure);
                ErrMsg = NewStrBuf();
                if (IO) {
-                       syslog(LOG_INFO, "need a 200, got a %ld !", IO->HttpReq.httpcode);
+                       EVRSSC_syslog(LOG_INFO, "need a 200, got a %ld !",
+                                     IO->HttpReq.httpcode);
                }
                strs[0] = ChrPtr(Ctx->Url);
                lens[0] = StrLength(Ctx->Url);
@@ -545,19 +566,19 @@ eNextState RSSAggregator_AnalyseReply(AsyncIO *IO)
                        IO->HttpReq.CurlError = "";
 
                StrBufPrintf(ErrMsg,
-                    "Error while RSS-Aggregation Run of %s\n"
-                    " need a 200, got a %ld !\n"
-                    " Curl Error message: \n%s / %s\n"
-                    " Redirect header points to: %s\n"
-                    " Response text was: \n"
-                    " \n %s\n",
-                    ChrPtr(Ctx->Url),
-                    IO->HttpReq.httpcode,
-                    IO->HttpReq.errdesc,
-                    IO->HttpReq.CurlError,
-                    ChrPtr(Ctx->RedirectUrl),
-                    ChrPtr(IO->HttpReq.ReplyData)
-               );
+                            "Error while RSS-Aggregation Run of %s\n"
+                            " need a 200, got a %ld !\n"
+                            " Curl Error message: \n%s / %s\n"
+                            " Redirect header points to: %s\n"
+                            " Response text was: \n"
+                            " \n %s\n",
+                            ChrPtr(Ctx->Url),
+                            IO->HttpReq.httpcode,
+                            IO->HttpReq.errdesc,
+                            IO->HttpReq.CurlError,
+                            ChrPtr(Ctx->RedirectUrl),
+                            ChrPtr(IO->HttpReq.ReplyData)
+                       );
 
                CtdlAideFPMessage(
                        ChrPtr(ErrMsg),
@@ -568,11 +589,10 @@ eNextState RSSAggregator_AnalyseReply(AsyncIO *IO)
                        EvGetNow(IO));
                
                FreeStrBuf(&ErrMsg);
-               syslog(LOG_DEBUG,
+               EVRSSC_syslog(LOG_DEBUG,
                              "RSS feed returned an invalid http status code. <%s><HTTP %ld>",
                              ChrPtr(Ctx->Url),
-                             IO->HttpReq.httpcode
-               );
+                             IO->HttpReq.httpcode);
                return eAbort;
        }
        else if (IO->HttpReq.httpcode != 200)
@@ -584,7 +604,8 @@ eNextState RSSAggregator_AnalyseReply(AsyncIO *IO)
                SetRSSState(IO, eRSSFailure);
                ErrMsg = NewStrBuf();
                if (IO) {
-                       syslog(LOG_INFO, "need a 200, got a %ld !", IO->HttpReq.httpcode);
+                       EVRSSC_syslog(LOG_ALERT, "need a 200, got a %ld !",
+                                     IO->HttpReq.httpcode);
                }
                strs[0] = ChrPtr(Ctx->Url);
                lens[0] = StrLength(Ctx->Url);
@@ -617,11 +638,10 @@ eNextState RSSAggregator_AnalyseReply(AsyncIO *IO)
                        EvGetNow(IO));
                
                FreeStrBuf(&ErrMsg);
-               syslog(LOG_DEBUG,
+               EVRSSC_syslog(LOG_DEBUG,
                              "RSS feed returned an invalid http status code. <%s><HTTP %ld>",
                              ChrPtr(Ctx->Url),
-                             IO->HttpReq.httpcode
-               );
+                             IO->HttpReq.httpcode);
                return eAbort;
        }
 
@@ -679,7 +699,7 @@ eNextState RSSAggregator_AnalyseReply(AsyncIO *IO)
        {
                FreeStrBuf(&guid);
 
-               syslog(LOG_DEBUG, "RSS feed already seen. <%s>", ChrPtr(Ctx->Url));
+               EVRSSC_syslog(LOG_DEBUG, "RSS feed already seen. <%s>", ChrPtr(Ctx->Url));
                return eAbort;
        }
        FreeStrBuf(&guid);
@@ -722,7 +742,7 @@ int rss_do_fetching(rss_aggregator *RSSAggr)
                               RSSAggregator_TerminateDB,
                               RSSAggregator_ShutdownAbort))
        {
-               syslog(LOG_INFO, "Unable to initialize libcurl.");
+               EVRSSCM_syslog(LOG_ALERT, "Unable to initialize libcurl.");
                return 0;
        }
        chnd = IO->HttpReq.chnd;
@@ -734,7 +754,7 @@ int rss_do_fetching(rss_aggregator *RSSAggr)
                    ChrPtr(RSSAggr->Url),
                    sizeof(((CitContext*)RSSAggr->IO.CitContext)->cs_host));
 
-       syslog(LOG_DEBUG, "Fetching RSS feed <%s>", ChrPtr(RSSAggr->Url));
+       EVRSSC_syslog(LOG_DEBUG, "Fetching RSS feed <%s>", ChrPtr(RSSAggr->Url));
        ParseURL(&RSSAggr->IO.ConnectMe, RSSAggr->Url, 80);
        CurlPrepareURL(RSSAggr->IO.ConnectMe);
 
@@ -753,11 +773,11 @@ void rssclient_scan_room(struct ctdlroom *qrbuf, void *data, OneRoomNetCfg *OneR
        rss_aggregator *use_this_RSSAggr = NULL;
        void *vptr;
 
-       syslog(LOG_DEBUG, "rssclient_scan_room(%s)", qrbuf->QRname);
+       EVRSSQ_syslog(LOG_DEBUG, "rssclient_scan_room(%s)", qrbuf->QRname);
        pthread_mutex_lock(&RSSQueueMutex);
        if (GetHash(RSSQueueRooms, LKEY(qrbuf->QRnumber), &vptr))
        {
-               syslog(LOG_DEBUG,
+               EVRSSQ_syslog(LOG_DEBUG,
                              "rssclient: [%ld] %s already in progress.",
                              qrbuf->QRnumber,
                              qrbuf->QRname);
@@ -771,19 +791,14 @@ void rssclient_scan_room(struct ctdlroom *qrbuf, void *data, OneRoomNetCfg *OneR
        while (RSSCfg != NULL)
        {
                pthread_mutex_lock(&RSSQueueMutex);
-               GetHash(RSSFetchUrls,
-                       SKEY(RSSCfg->Url),
-                       &vptr);
+               GetHash(RSSFetchUrls, SKEY(RSSCfg->Url), &vptr);
 
                use_this_RSSAggr = (rss_aggregator *)vptr;
                if (use_this_RSSAggr != NULL)
                {
                        pRSSConfig *pRSSCfg;
 
-                       StrBufAppendBufPlain(
-                               use_this_RSSAggr->rooms,
-                               qrbuf->QRname,
-                               -1, 0);
+                       StrBufAppendBufPlain(use_this_RSSAggr->rooms, qrbuf->QRname, -1, 0);
                        if (use_this_RSSAggr->roomlist_parts==1)
                        {
                                use_this_RSSAggr->OtherQRnumbers
@@ -848,7 +863,7 @@ void rssclient_scan(void) {
 
        /* Run no more than once every 15 minutes. */
        if ((now - last_run) < 900) {
-               syslog(LOG_DEBUG,
+               EVRSSQ_syslog(LOG_DEBUG,
                              "Client: polling interval not yet reached; last run was %ldm%lds ago",
                              ((now - last_run) / 60),
                              ((now - last_run) % 60)
@@ -866,21 +881,22 @@ void rssclient_scan(void) {
        pthread_mutex_unlock(&RSSQueueMutex);
 
        if ((RSSRoomCount > 0) || (RSSCount > 0)) {
-               syslog(LOG_DEBUG,
+               EVRSSQ_syslog(LOG_DEBUG,
                              "rssclient: concurrency check failed; %d rooms and %d url's are queued",
                              RSSRoomCount, RSSCount
                        );
+               abort();
                return;
        }
 
        become_session(&rss_CC);
-       syslog(LOG_DEBUG, "rssclient started");
-       CtdlForEachNetCfgRoom(rssclient_scan_room, NULL, rssclient);
+       EVRSSQM_syslog(LOG_DEBUG, "rssclient started");
+       CtdlForEachNetCfgRoom(rssclient_scan_room, NULL);
 
        if (GetCount(RSSFetchUrls) > 0)
        {
                pthread_mutex_lock(&RSSQueueMutex);
-               syslog(LOG_DEBUG,
+               EVRSSQ_syslog(LOG_DEBUG,
                               "rssclient starting %d Clients",
                               GetCount(RSSFetchUrls));
                
@@ -895,11 +911,10 @@ void rssclient_scan(void) {
                DeleteHashPos(&it);
                pthread_mutex_unlock(&RSSQueueMutex);
        }
-       else {
-               syslog(LOG_DEBUG, "Nothing to do.");
-       }
+       else
+               EVRSSQM_syslog(LOG_DEBUG, "Nothing to do.");
 
-       syslog(LOG_DEBUG, "rssclient ended");
+       EVRSSQM_syslog(LOG_DEBUG, "rssclient ended");
        return;
 }
 
@@ -951,7 +966,7 @@ int RSSCheckUsetableVeto(StrBuf *ErrMsg)
        Info.Now = time (NULL);
        Info.Veto = 0;
 
-       CtdlForEachNetCfgRoom(rssclient_veto_scan_room, &Info, rssclient);
+       CtdlForEachNetCfgRoom(rssclient_veto_scan_room, &Info);
 
        return Info.Veto;;
 }