]> code.citadel.org Git - citadel.git/blobdiff - citadel/modules/rssclient/serv_rssclient.c
Mesages: fix copying of fields; add flush function to cleanup a messages structs...
[citadel.git] / citadel / modules / rssclient / serv_rssclient.c
index f9e2a312afe273e7a137c850cac798cc81bc9eba..f774fa3f543b0ea6d6a3f8083135ac518bb01a37 100644 (file)
@@ -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['A'] = SmashStrBuf(&Encoded);
-                       SaveMsg->Msg.cm_fields['P'] =
-                               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['A'] =
-                                       SmashStrBuf(&SaveMsg->author_or_creator);
-                               SaveMsg->Msg.cm_fields['P'] =
-                                       strdup(SaveMsg->Msg.cm_fields['A']);
+                               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['A'] =
-                                       SmashStrBuf(&Encoded);
-                               SaveMsg->Msg.cm_fields['P'] =
-                                       strdup("rss@localhost");
+                               CM_SetAsFieldSB(&SaveMsg->Msg, eAuthor, &Encoded);
+                               CM_SetField(&SaveMsg->Msg, eMessagePath, HKEY("rss@localhost"));
 
                        }
                }
        }
        else {
-               SaveMsg->Msg.cm_fields['A'] = strdup("rss");
+               CM_SetField(&SaveMsg->Msg, eAuthor, HKEY("rss"));
        }
 
-       SaveMsg->Msg.cm_fields['N'] = strdup(NODENAME);
+       CM_SetField(&SaveMsg->Msg, eNodeName, NODENAME, strlen(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['U'] = SmashStrBuf(&QPEncoded);
+               CM_SetAsFieldSB(&SaveMsg->Msg, eMsgSubject, &QPEncoded);
                FreeStrBuf(&Encoded);
        }
        if (SaveMsg->link == NULL)
@@ -398,8 +395,8 @@ eNextState RSSSaveMessage(AsyncIO *IO)
 
        if (rss_format_item(IO, RSSAggr->ThisMsg))
        {
-               RSSAggr->ThisMsg->Msg.cm_fields['M'] =
-                       SmashStrBuf(&RSSAggr->ThisMsg->Message);
+               CM_SetAsFieldSB(&RSSAggr->ThisMsg->Msg, eMesageText,
+                                      &RSSAggr->ThisMsg->Message);
 
                CtdlSubmitMsg(&RSSAggr->ThisMsg->Msg, &RSSAggr->recp, NULL, 0);
                
@@ -419,13 +416,13 @@ eNextState RSSSaveMessage(AsyncIO *IO)
 
 eNextState RSS_FetchNetworkUsetableEntry(AsyncIO *IO)
 {
+#ifndef DEBUG_RSS
        const char *Key;
        long len;
        rss_aggregator *Ctx = (rss_aggregator *) IO->Data;
 
        /* Find out if we've already seen this item */
 // todo: expiry?
-#ifndef DEBUG_RSS
        SetRSSState(IO, eRSSUT);
        if (CheckIfAlreadySeen("RSS Item Seen",
                               Ctx->ThisMsg->MsgGUID,