From 9e07e8e851dcb5758feacb349cbb94b15799d632 Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Sun, 19 Aug 2012 16:13:16 +0200 Subject: [PATCH] SMTP-Client: add the stati of all delivery attempts to the status messages. --- citadel/modules/smtp/serv_smtpeventclient.c | 8 ++++++++ citadel/modules/smtp/serv_smtpqueue.c | 7 +++++-- citadel/modules/smtp/smtpqueue.h | 2 ++ 3 files changed, 15 insertions(+), 2 deletions(-) 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 { -- 2.30.2