Fixed a null pointer issue
[citadel.git] / citadel / modules / rssclient / serv_rssclient.c
index f774fa3f543b0ea6d6a3f8083135ac518bb01a37..f76b3c01cde642f8b3c0fab5c0d555cc45d13ea1 100644 (file)
@@ -75,13 +75,13 @@ int RSSClientDebugEnabled = 0;
 
 #define EVRSSC_syslog(LEVEL, FORMAT, ...)                              \
        DBGLOG(LEVEL) syslog(LEVEL,                                     \
-                            "IO[%ld]CC[%d][%ld]RSS" FORMAT,            \
-                            IO->ID, CCID, N, __VA_ARGS__)
+                            "%s[%ld]CC[%d][%ld]RSS" FORMAT,            \
+                            IOSTR, IO->ID, CCID, N, __VA_ARGS__)
 
 #define EVRSSCM_syslog(LEVEL, FORMAT)                                  \
        DBGLOG(LEVEL) syslog(LEVEL,                                     \
-                            "IO[%ld]CC[%d][%ld]RSS" FORMAT,            \
-                            IO->ID, CCID, N)
+                            "%s[%ld]CC[%d][%ld]RSS" FORMAT,            \
+                            IOSTR, IO->ID, CCID, N)
 
 #define EVRSSQ_syslog(LEVEL, FORMAT, ...)                              \
        DBGLOG(LEVEL) syslog(LEVEL, "RSS" FORMAT,                       \
@@ -90,8 +90,8 @@ int RSSClientDebugEnabled = 0;
        DBGLOG(LEVEL) syslog(LEVEL, "RSS" FORMAT)
 
 #define EVRSSCSM_syslog(LEVEL, FORMAT)                                 \
-       DBGLOG(LEVEL) syslog(LEVEL, "IO[%ld][%ld]RSS" FORMAT,           \
-                            IO->ID, N)
+       DBGLOG(LEVEL) syslog(LEVEL, "%s[%ld][%ld]RSS" FORMAT,           \
+                            IOSTR, IO->ID, N)
 
 typedef enum _RSSState {
        eRSSCreated,
@@ -333,7 +333,7 @@ int rss_format_item(AsyncIO *IO, networker_save_message *SaveMsg)
                CM_SetField(&SaveMsg->Msg, eAuthor, HKEY("rss"));
        }
 
-       CM_SetField(&SaveMsg->Msg, eNodeName, NODENAME, strlen(NODENAME));
+       CM_SetField(&SaveMsg->Msg, eNodeName, CFG_KEY(c_nodename));
        if (SaveMsg->title != NULL) {
                long len;
                char *Sbj;
@@ -416,6 +416,8 @@ eNextState RSSSaveMessage(AsyncIO *IO)
 
 eNextState RSS_FetchNetworkUsetableEntry(AsyncIO *IO)
 {
+       static const time_t antiExpire = USETABLE_ANTIEXPIRE_HIRES;
+       time_t seenstamp = 0;
 #ifndef DEBUG_RSS
        const char *Key;
        long len;
@@ -424,18 +426,20 @@ eNextState RSS_FetchNetworkUsetableEntry(AsyncIO *IO)
        /* Find out if we've already seen this item */
 // todo: expiry?
        SetRSSState(IO, eRSSUT);
-       if (CheckIfAlreadySeen("RSS Item Seen",
-                              Ctx->ThisMsg->MsgGUID,
-                              IO->Now,
-                              IO->Now - USETABLE_ANTIEXPIRE_HIRES,
-                              eCheckUpdate,
-                              CCID, IO->ID)
-           != 0)
+       seenstamp = CheckIfAlreadySeen("RSS Item Seen",
+                                      Ctx->ThisMsg->MsgGUID,
+                                      IO->Now,
+                                      antiExpire,
+                                      eCheckUpdate,
+                                      CCID, IO->ID);
+       if (seenstamp < antiExpire)
        {
                /* Item has already been seen */
                EVRSSC_syslog(LOG_DEBUG,
-                         "%s has already been seen\n",
-                         ChrPtr(Ctx->ThisMsg->MsgGUID));
+                             "%s has already been seen - %ld < %ld",
+                             ChrPtr(Ctx->ThisMsg->MsgGUID),
+                             seenstamp, antiExpire);
+
                SetRSSState(IO, eRSSParsing);
 
                if (GetNextHashPos(Ctx->Messages,
@@ -451,6 +455,11 @@ eNextState RSS_FetchNetworkUsetableEntry(AsyncIO *IO)
        else
 #endif
        {
+               /* Item has already been seen */
+               EVRSSC_syslog(LOG_DEBUG,
+                             "%s Parsing - %ld >= %ld",
+                             ChrPtr(Ctx->ThisMsg->MsgGUID),
+                             seenstamp, antiExpire);
                SetRSSState(IO, eRSSParsing);
 
                NextDBOperation(IO, RSSSaveMessage);
@@ -504,7 +513,7 @@ eNextState RSSAggregator_AnalyseReply(AsyncIO *IO)
 
                SetRSSState(IO, eRSSFailure);
                ErrMsg = NewStrBuf();
-               EVRSSC_syslog(LOG_ALERT, "need a 200, got a %ld !\n",
+               if (IO) EVRSSC_syslog(LOG_ALERT, "need a 200, got a %ld !\n",
                              IO->HttpReq.httpcode);
                
                strs[0] = ChrPtr(Ctx->Url);