X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fsmtp%2Fserv_smtpeventclient.c;h=c8da5590e63b62841f30a3cfccf81331957679bc;hb=f6211d5b6354feb9c2205b1091583fc8fce312fb;hp=e5c1cee00931f84c887addfcbdb51002b8eab444;hpb=b9e20402616d9fd637870b370453436b8e7f2418;p=citadel.git diff --git a/citadel/modules/smtp/serv_smtpeventclient.c b/citadel/modules/smtp/serv_smtpeventclient.c index e5c1cee00..c8da5590e 100644 --- a/citadel/modules/smtp/serv_smtpeventclient.c +++ b/citadel/modules/smtp/serv_smtpeventclient.c @@ -126,6 +126,7 @@ eNextState FinalizeMessageSendDB(AsyncIO *IO); eNextState FinalizeMessageSend_DB1(AsyncIO *IO); eNextState FinalizeMessageSend_DB2(AsyncIO *IO); eNextState FinalizeMessageSend_DB3(AsyncIO *IO); +eNextState FinalizeMessageSend_DB4(AsyncIO *IO); /****************************************************************************** * So, we're finished with sending (regardless of success or failure) * @@ -217,11 +218,27 @@ inline void FinalizeMessageSend_DB_3(AsyncIO *IO) ""); FreeStrBuf(&Msg->QMsgData); } + DecreaseShutdownDeliveries(Msg->MyQItem); } eNextState FinalizeMessageSend_DB3(AsyncIO *IO) { + SmtpOutMsg *Msg = IO->Data; FinalizeMessageSend_DB_3(IO); - return eAbort; + if (!Msg->IDestructQueItem) + return eAbort; + return NextDBOperation(IO, FinalizeMessageSend_DB4); +} + +eNextState FinalizeMessageSend_DB4(AsyncIO *IO) +{ + int n; + SmtpOutMsg *Msg = IO->Data; + + n = GetShutdownDeliveries(Msg->MyQItem); + if (n > 0) + return NextDBOperation(IO, FinalizeMessageSend_DB4); + else + return eAbort; } eNextState FinalizeMessageSend_DB(AsyncIO *IO)