- FreeStrBuf(&rncptr->Item->guid);
- FreeStrBuf(&rncptr->Item->title);
- FreeStrBuf(&rncptr->Item->link);
- FreeStrBuf(&rncptr->Item->linkTitle);
- FreeStrBuf(&rncptr->Item->reLink);
- FreeStrBuf(&rncptr->Item->reLinkTitle);
- FreeStrBuf(&rncptr->Item->description);
- FreeStrBuf(&rncptr->Item->channel_title);
- FreeStrBuf(&rncptr->Item->author_or_creator);
- FreeStrBuf(&rncptr->Item->author_url);
- FreeStrBuf(&rncptr->Item->author_email);
-
- free(rncptr->Item);
+ StrBuf *ErrMsg;
+ long lens[2];
+ const char *strs[2];
+
+ 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);
+ FreeStrBuf(&ErrMsg);
+ return eAbort;
+ }
+
+ 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 */
+ memcpy(ut.ut_msgid, SKEY(guid));
+ ut.ut_timestamp = time(NULL);
+
+ cdbut = cdb_fetch(CDB_USETABLE, SKEY(guid));
+#ifndef DEBUG_RSS
+ if (cdbut != NULL) {
+ /* Item has already been seen */
+ EVRSSC_syslog(LOG_DEBUG,
+ "%s has already been seen\n",
+ ChrPtr(Ctx->Url));
+ cdb_free(cdbut);