before removing an entry from an hash, revalidate whether we actualy found it
[citadel.git] / citadel / modules / smtp / serv_smtpqueue.c
index 5f22ee6fbd2bfc3088b24fc3ada8b7bd4521facb..2197acf63dd34d36bd95e6f54666f5fb0c8a9e02 100644 (file)
@@ -671,8 +671,8 @@ void smtp_do_procmsg(long msgnum, void *userdata) {
                It = GetNewHashPos(MyQItem->MailQEntries, 0);
                pthread_mutex_lock(&ActiveQItemsLock);
                {
-                       GetHashPosFromKey(ActiveQItems, LKEY(MyQItem->MessageID), It);
-                       DeleteEntryFromHash(ActiveQItems, It);
+                       if (GetHashPosFromKey(ActiveQItems, LKEY(MyQItem->MessageID), It))
+                               DeleteEntryFromHash(ActiveQItems, It);
                }
                pthread_mutex_unlock(&ActiveQItemsLock);
                ////FreeQueItem(&MyQItem); TODO: DeleteEntryFromHash frees this?
@@ -688,8 +688,8 @@ void smtp_do_procmsg(long msgnum, void *userdata) {
                It = GetNewHashPos(MyQItem->MailQEntries, 0);
                pthread_mutex_lock(&ActiveQItemsLock);
                {
-                       GetHashPosFromKey(ActiveQItems, LKEY(MyQItem->MessageID), It);
-                       DeleteEntryFromHash(ActiveQItems, It);
+                       if (GetHashPosFromKey(ActiveQItems, LKEY(MyQItem->MessageID), It))
+                               DeleteEntryFromHash(ActiveQItems, It);
                }
                pthread_mutex_unlock(&ActiveQItemsLock);
                DeleteHashPos(&It);