Route all access to cm_fields[] through api functions
[citadel.git] / citadel / modules / smtp / serv_smtpqueue.c
index c128fd49026fe728627dbe8d147b4fb4b3959bdb..685e2ca7685e8819cb7cbcdb06733d71c15b4b07 100644 (file)
@@ -518,7 +518,7 @@ StrBuf *smtp_load_msg(OneQueItem *MyQItem, int n, char **Author, char **Address)
 void smtpq_do_bounce(OneQueItem *MyQItem, StrBuf *OMsgTxt, ParsedURL *Relay)
 {
        static int seq = 0;
-
+       
        struct CtdlMessage *bmsg = NULL;
        StrBuf *boundary;
        StrBuf *Msg = NULL;
@@ -569,7 +569,10 @@ void smtpq_do_bounce(OneQueItem *MyQItem, StrBuf *OMsgTxt, ParsedURL *Relay)
                        StrBufAppendBufPlain(Msg, HKEY(" "), 0);
                        StrBufAppendBuf(Msg, ThisItem->Recipient, 0);
                        StrBufAppendBufPlain(Msg, HKEY(": "), 0);
-                       StrBufAppendBuf(Msg, ThisItem->StatusMessage, 0);
+                       if (ThisItem->AllStatusMessages != NULL)
+                               StrBufAppendBuf(Msg, ThisItem->AllStatusMessages, 0);
+                       else
+                               StrBufAppendBuf(Msg, ThisItem->StatusMessage, 0);
                        StrBufAppendBufPlain(Msg, HKEY("\r\n"), 0);
                }
        }
@@ -697,11 +700,11 @@ void smtpq_do_bounce(OneQueItem *MyQItem, StrBuf *OMsgTxt, ParsedURL *Relay)
        bmsg->cm_anon_type = MES_NORMAL;
        bmsg->cm_format_type = FMT_RFC822;
 
-       bmsg->cm_fields['O'] = strdup(MAILROOM);
-       bmsg->cm_fields['A'] = strdup("Citadel");
-       bmsg->cm_fields['N'] = strdup(config.c_nodename);
-       bmsg->cm_fields['U'] = strdup("Delivery Status Notification (Failure)");
-       bmsg->cm_fields['M'] = SmashStrBuf(&BounceMB);
+       CM_SetField(bmsg, eOriginalRoom, HKEY(MAILROOM));
+       CM_SetField(bmsg, eAuthor, HKEY("Citadel"));
+       CM_SetField(bmsg, eNodeName, config.c_nodename, strlen(config.c_nodename));
+       CM_SetField(bmsg, eMsgSubject, HKEY("Delivery Status Notification (Failure)"));
+       CM_SetAsFieldSB(bmsg, eMesageText, &BounceMB);
 
        /* First try the user who sent the message */
        if (StrLength(MyQItem->BounceTo) == 0) {
@@ -845,7 +848,7 @@ void smtp_do_procmsg(long msgnum, void *userdata) {
                return;
        }
 
-       pch = instr = msg->cm_fields['M'];
+       pch = instr = msg->cm_fields[eMesageText];
 
        /* Strip out the headers (no not amd any other non-instruction) line */
        while (pch != NULL) {
@@ -1005,7 +1008,7 @@ void smtp_do_procmsg(long msgnum, void *userdata) {
                                                         n,
                                                         RelayUrls);
 
-                               if (KeepBuffers) HaveBuffers = 1;
+                               if (KeepBuffers) HaveBuffers++;
 
                                i++;
                        }
@@ -1047,7 +1050,7 @@ void smtp_do_procmsg(long msgnum, void *userdata) {
                                                         n,
                                                         RelayUrls);
 
-                               if (KeepBuffers) HaveBuffers = 1;
+                               if (KeepBuffers) HaveBuffers++;
 
                                i++;
                        }