]> code.citadel.org Git - citadel.git/blobdiff - citadel/modules/rssclient/serv_rssclient.c
Fucked up the sequence of arguments for the floodprotected aide message
[citadel.git] / citadel / modules / rssclient / serv_rssclient.c
index 059cd1b47f14e7a0b457fe82ea0922ce8212e7ac..b9f2361ab5693a94bd070406fd704c01aef452c4 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,
@@ -290,6 +290,8 @@ int rss_format_item(AsyncIO *IO, networker_save_message *SaveMsg)
                return 0;
        }
 
+       CM_Flush(&SaveMsg->Msg);
+
        if (SaveMsg->author_or_creator != NULL) {
 
                char *From;
@@ -307,36 +309,31 @@ int rss_format_item(AsyncIO *IO, networker_save_message *SaveMsg)
                if (!FromAt && StrLength (SaveMsg->author_email) > 0)
                {
                        StrBufRFC2047encode(&Encoded, SaveMsg->author_or_creator);
-                       SaveMsg->Msg.cm_fields[eAuthor] = SmashStrBuf(&Encoded);
-                       SaveMsg->Msg.cm_fields[eMessagePath] =
-                               SmashStrBuf(&SaveMsg->author_email);
+                       CM_SetAsFieldSB(&SaveMsg->Msg, eAuthor, &Encoded);
+                       CM_SetAsFieldSB(&SaveMsg->Msg, eMessagePath, &SaveMsg->author_email);
                }
                else
                {
                        if (FromAt)
                        {
-                               SaveMsg->Msg.cm_fields[eAuthor] =
-                                       SmashStrBuf(&SaveMsg->author_or_creator);
-                               SaveMsg->Msg.cm_fields[eMessagePath] =
-                                       strdup(SaveMsg->Msg.cm_fields[eAuthor]);
+                               CM_SetAsFieldSB(&SaveMsg->Msg, eAuthor, &SaveMsg->author_or_creator);
+                               CM_CopyField(&SaveMsg->Msg, eMessagePath, eAuthor);
                        }
                        else
                        {
                                StrBufRFC2047encode(&Encoded,
                                                    SaveMsg->author_or_creator);
-                               SaveMsg->Msg.cm_fields[eAuthor] =
-                                       SmashStrBuf(&Encoded);
-                               SaveMsg->Msg.cm_fields[eMessagePath] =
-                                       strdup("rss@localhost");
+                               CM_SetAsFieldSB(&SaveMsg->Msg, eAuthor, &Encoded);
+                               CM_SetField(&SaveMsg->Msg, eMessagePath, HKEY("rss@localhost"));
 
                        }
                }
        }
        else {
-               SaveMsg->Msg.cm_fields[eAuthor] = strdup("rss");
+               CM_SetField(&SaveMsg->Msg, eAuthor, HKEY("rss"));
        }
 
-       SaveMsg->Msg.cm_fields[eNodeName] = strdup(NODENAME);
+       CM_SetField(&SaveMsg->Msg, eNodeName, CFG_KEY(c_nodename));
        if (SaveMsg->title != NULL) {
                long len;
                char *Sbj;
@@ -358,7 +355,7 @@ int rss_format_item(AsyncIO *IO, networker_save_message *SaveMsg)
                StrBufTrim(Encoded);
                StrBufRFC2047encode(&QPEncoded, Encoded);
 
-               SaveMsg->Msg.cm_fields[eMsgSubject] = SmashStrBuf(&QPEncoded);
+               CM_SetAsFieldSB(&SaveMsg->Msg, eMsgSubject, &QPEncoded);
                FreeStrBuf(&Encoded);
        }
        if (SaveMsg->link == NULL)
@@ -398,14 +395,14 @@ eNextState RSSSaveMessage(AsyncIO *IO)
 
        if (rss_format_item(IO, RSSAggr->ThisMsg))
        {
-               RSSAggr->ThisMsg->Msg.cm_fields[eMesageText] =
-                       SmashStrBuf(&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, IO->Now, 0, eWrite, CCID, IO->ID);
+               CheckIfAlreadySeen("RSS Item Insert", RSSAggr->ThisMsg->MsgGUID, EvGetNow(IO), 0, eWrite, CCID, IO->ID);
        }
 
        if (GetNextHashPos(RSSAggr->Messages,
@@ -419,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;
@@ -427,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,
+                                      EvGetNow(IO),
+                                      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,
@@ -454,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);
@@ -507,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);
@@ -536,8 +542,9 @@ eNextState RSSAggregator_AnalyseReply(AsyncIO *IO)
                        ChrPtr(ErrMsg),
                        "RSS Aggregation run failure",
                        2, strs, (long*) &lens,
-                       IO->Now,
-                       IO->ID, CCID);
+                       CCID,
+                       IO->ID,
+                       EvGetNow(IO));
                
                FreeStrBuf(&ErrMsg);
                EVRSSC_syslog(LOG_DEBUG,
@@ -551,7 +558,7 @@ eNextState RSSAggregator_AnalyseReply(AsyncIO *IO)
 
        while (pCfg != NULL)
        {
-               UpdateLastKnownGood (pCfg, IO->Now);
+               UpdateLastKnownGood (pCfg, EvGetNow(IO));
                if ((Ctx->roomlist_parts > 1) && 
                    (it == NULL))
                {
@@ -593,8 +600,8 @@ eNextState RSSAggregator_AnalyseReply(AsyncIO *IO)
 
        if (CheckIfAlreadySeen("RSS Whole",
                               guid,
-                              IO->Now,
-                              IO->Now - USETABLE_ANTIEXPIRE,
+                              EvGetNow(IO),
+                              EvGetNow(IO) - USETABLE_ANTIEXPIRE,
                               eCheckUpdate,
                               CCID, IO->ID)
            != 0)