From: Wilfried Goesgens Date: Sun, 19 Aug 2012 14:13:16 +0000 (+0200) Subject: SMTP-Client: add the stati of all delivery attempts to the status messages. X-Git-Tag: v8.20~254 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=9e07e8e851dcb5758feacb349cbb94b15799d632 SMTP-Client: add the stati of all delivery attempts to the status messages. --- diff --git a/citadel/modules/smtp/serv_smtpeventclient.c b/citadel/modules/smtp/serv_smtpeventclient.c index 34363eb6f..c744bb6e4 100644 --- a/citadel/modules/smtp/serv_smtpeventclient.c +++ b/citadel/modules/smtp/serv_smtpeventclient.c @@ -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) && diff --git a/citadel/modules/smtp/serv_smtpqueue.c b/citadel/modules/smtp/serv_smtpqueue.c index b56f40301..fb74ed2ad 100644 --- a/citadel/modules/smtp/serv_smtpqueue.c +++ b/citadel/modules/smtp/serv_smtpqueue.c @@ -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); diff --git a/citadel/modules/smtp/smtpqueue.h b/citadel/modules/smtp/smtpqueue.h index b2778b995..2bd4c2700 100644 --- a/citadel/modules/smtp/smtpqueue.h +++ b/citadel/modules/smtp/smtpqueue.h @@ -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 {