SMTP-Client: add the stati of all delivery attempts to the status messages.
authorWilfried Goesgens <dothebart@citadel.org>
Sun, 19 Aug 2012 14:13:16 +0000 (16:13 +0200)
committerWilfried Goesgens <dothebart@citadel.org>
Sun, 19 Aug 2012 14:13:16 +0000 (16:13 +0200)
citadel/modules/smtp/serv_smtpeventclient.c
citadel/modules/smtp/serv_smtpqueue.c
citadel/modules/smtp/smtpqueue.h

index 34363eb6f64545a95ae8e88da333a3820a868180..c744bb6e4cb81fd3bf2d99a60834d6c21c04f435 100644 (file)
@@ -264,6 +264,14 @@ eNextState FailOneAttempt(AsyncIO *IO)
         */
        StopClientWatchers(IO, 1);
 
+       Msg->MyQEntry->nAttempt ++;
+       if (Msg->MyQEntry->AllStatusMessages == NULL)
+               Msg->MyQEntry->AllStatusMessages = NewStrBuf();
+
+       StrBufAppendPrintf(Msg->MyQEntry->AllStatusMessages, "%ld) ", Msg->MyQEntry->nAttempt);
+       StrBufAppendBuf(Msg->MyQEntry->AllStatusMessages, Msg->MyQEntry->StatusMessage, 0);
+       StrBufAppendBufPlain(Msg->MyQEntry->AllStatusMessages, HKEY("; "), 0);
+
        if (Msg->pCurrRelay != NULL)
                Msg->pCurrRelay = Msg->pCurrRelay->Next;
        if ((Msg->pCurrRelay != NULL) &&
index b56f40301d4e826c1774ba58a667356b877b0e49..fb74ed2ad76d7afc6b31bb0a5e1c133701c79857 100644 (file)
@@ -194,7 +194,7 @@ void FreeMailQEntry(void *qv)
 */
        FreeStrBuf(&Q->Recipient);
        FreeStrBuf(&Q->StatusMessage);
-
+       FreeStrBuf(&Q->AllStatusMessages);
        memset(Q, 0, sizeof(MailQEntry));
        free(Q);
 }
@@ -385,7 +385,10 @@ StrBuf *SerializeQueueItem(OneQueItem *MyQItem)
                StrBufAppendBufPlain(QMessage, HKEY("|"), 0);
                StrBufAppendPrintf(QMessage, "%d", ThisItem->Status);
                StrBufAppendBufPlain(QMessage, HKEY("|"), 0);
-               StrBufAppendBuf(QMessage, ThisItem->StatusMessage, 0);
+               if (ThisItem->AllStatusMessages != NULL)
+                       StrBufAppendBuf(QMessage, ThisItem->AllStatusMessages, 0);
+               else
+                       StrBufAppendBuf(QMessage, ThisItem->StatusMessage, 0);
        }
        DeleteHashPos(&It);
        StrBufAppendBufPlain(QMessage, HKEY("\n"), 0);
index b2778b99517d17d91b7b7f01af39a07c4b18958a..2bd4c2700f4921fbf3a61cb46c89386aee073f1e 100644 (file)
@@ -27,6 +27,7 @@ extern const unsigned short DefaultMXPort;
 typedef struct _mailq_entry {
        StrBuf *Recipient;
        StrBuf *StatusMessage;
+       StrBuf *AllStatusMessages;
        int Status;
        /**<
         * 0 = No delivery has yet been attempted
@@ -41,6 +42,7 @@ typedef struct _mailq_entry {
        int n;
        int Active;
        int StillActive;
+       int nAttempt;
 }MailQEntry;
 
 typedef struct queueitem {