- NextDBOperation(IO, RSSSaveMessage);
- return eSendMore;
- }
- return eSendMore;
-}
-
-eNextState RSSAggregator_AnalyseReply(AsyncIO *IO)
-{
- u_char rawdigest[MD5_DIGEST_LEN];
- struct MD5Context md5context;
- StrBuf *guid;
- rss_aggregator *Ctx = (rss_aggregator *) IO->Data;
-
- if (IO->HttpReq.httpcode != 200)
- {
- StrBuf *ErrMsg;
- long lens[2];
- const char *strs[2];
-
- SetRSSState(IO, eRSSFailure);
- ErrMsg = NewStrBuf();
- EVRSSC_syslog(LOG_ALERT, "need a 200, got a %ld !\n",
- IO->HttpReq.httpcode);
-
- strs[0] = ChrPtr(Ctx->Url);
- lens[0] = StrLength(Ctx->Url);
-
- strs[1] = ChrPtr(Ctx->rooms);
- lens[1] = StrLength(Ctx->rooms);
- StrBufPrintf(ErrMsg,
- "Error while RSS-Aggregation Run of %s\n"
- " need a 200, got a %ld !\n"
- " Response text was: \n"
- " \n %s\n",
- ChrPtr(Ctx->Url),
- IO->HttpReq.httpcode,
- ChrPtr(IO->HttpReq.ReplyData));
- CtdlAideFPMessage(
- ChrPtr(ErrMsg),
- "RSS Aggregation run failure",
- 2, strs, (long*) &lens,
- IO->Now,
- IO->ID, CCID);
-
- FreeStrBuf(&ErrMsg);
- EVRSSC_syslog(LOG_DEBUG,
- "RSS feed returned an invalid http status code. <%s><HTTP %ld>\n",
- ChrPtr(Ctx->Url),
- IO->HttpReq.httpcode);
- return eAbort;
- }
- SetRSSState(IO, eRSSUT);
-
- MD5Init(&md5context);
-
- MD5Update(&md5context,
- (const unsigned char*)SKEY(IO->HttpReq.ReplyData));
-
- MD5Update(&md5context,
- (const unsigned char*)SKEY(Ctx->Url));
-
- MD5Final(rawdigest, &md5context);
- guid = NewStrBufPlain(NULL,
- MD5_DIGEST_LEN * 2 + 12 /* _rss2ctdl*/);
- StrBufHexEscAppend(guid, NULL, rawdigest, MD5_DIGEST_LEN);
- StrBufAppendBufPlain(guid, HKEY("_rssFM"), 0);
- if (StrLength(guid) > 40)
- StrBufCutAt(guid, 40, NULL);
- /* Find out if we've already seen this item */
-
-#ifndef DEBUG_RSS
-
- if (CheckIfAlreadySeen("RSS Whole",
- guid,
- IO->Now,
- IO->Now - USETABLE_ANTIEXPIRE,
- eCheckUpdate,
- IO->ID, CCID)
- != 0)
- {
- FreeStrBuf(&guid);
-
- EVRSSC_syslog(LOG_DEBUG, "RSS feed already seen. <%s>\n", ChrPtr(Ctx->Url));
- return eAbort;