X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fsmtp%2Fserv_smtpqueue.c;h=92bc9d625d0826398c0dab5636f7395f3cfa37d8;hb=f6211d5b6354feb9c2205b1091583fc8fce312fb;hp=2292df1c46eb7582808528d7919dc8da929875e3;hpb=b9e20402616d9fd637870b370453436b8e7f2418;p=citadel.git diff --git a/citadel/modules/smtp/serv_smtpqueue.c b/citadel/modules/smtp/serv_smtpqueue.c index 2292df1c4..92bc9d625 100644 --- a/citadel/modules/smtp/serv_smtpqueue.c +++ b/citadel/modules/smtp/serv_smtpqueue.c @@ -141,6 +141,22 @@ int DecreaseQReference(OneQueItem *MyQItem) return IDestructQueItem; } +void DecreaseShutdownDeliveries(OneQueItem *MyQItem) +{ + pthread_mutex_lock(&ActiveQItemsLock); + MyQItem->NotYetShutdownDeliveries--; + pthread_mutex_unlock(&ActiveQItemsLock); +} + +int GetShutdownDeliveries(OneQueItem *MyQItem) +{ + int DestructNow; + + pthread_mutex_lock(&ActiveQItemsLock); + DestructNow = MyQItem->ActiveDeliveries == 0; + pthread_mutex_unlock(&ActiveQItemsLock); + return DestructNow; +} void RemoveQItem(OneQueItem *MyQItem) { long len; @@ -856,6 +872,7 @@ void smtp_do_procmsg(long msgnum, void *userdata) { } DeleteHashPos(&It); + MyQItem->NotYetShutdownDeliveries = MyQItem->ActiveDeliveries = CountActiveQueueEntries(MyQItem); /* failsafe against overload: