SMPC: when aborting because of to many outbound job free the aborted message in the...
authorWilfried Goesgens <dothebart@citadel.org>
Tue, 27 Nov 2012 21:37:43 +0000 (22:37 +0100)
committerWilfried Goesgens <dothebart@citadel.org>
Tue, 27 Nov 2012 21:37:43 +0000 (22:37 +0100)
citadel/modules/smtp/serv_smtpqueue.c

index fb74ed2ad76d7afc6b31bb0a5e1c133701c79857..c128fd49026fe728627dbe8d147b4fb4b3959bdb 100644 (file)
@@ -829,7 +829,7 @@ void smtp_do_procmsg(long msgnum, void *userdata) {
        StrBuf *Msg =NULL;
 
        if (mynumsessions > max_sessions_for_outbound_smtp) {
-               SMTPC_syslog(LOG_DEBUG,
+               SMTPC_syslog(LOG_INFO,
                             "skipping because of num jobs %d > %d max_sessions_for_outbound_smtp",
                             mynumsessions,
                             max_sessions_for_outbound_smtp);
@@ -940,13 +940,23 @@ void smtp_do_procmsg(long msgnum, void *userdata) {
            (((MyQItem->ActiveDeliveries * 2)  < max_sessions_for_outbound_smtp)))
        {
                /* abort delivery for another time. */
-               SMTPC_syslog(LOG_DEBUG,
+               SMTPC_syslog(LOG_INFO,
                             "SMTP Queue: skipping because of num jobs %d + %ld > %d max_sessions_for_outbound_smtp",
                             mynumsessions,
                             MyQItem->ActiveDeliveries,
                             max_sessions_for_outbound_smtp);
 
-               FreeQueItem(&MyQItem);
+               It = GetNewHashPos(MyQItem->MailQEntries, 0);
+               pthread_mutex_lock(&ActiveQItemsLock);
+               {
+                       if (GetHashPosFromKey(ActiveQItems,
+                                             LKEY(MyQItem->MessageID),
+                                             It))
+                       {
+                               DeleteEntryFromHash(ActiveQItems, It);
+                       }
+               }
+               pthread_mutex_unlock(&ActiveQItemsLock);
 
                return;
        }