From 06e958649c74041cc5cc68ba23bc3d6cf70f1de4 Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Mon, 21 Nov 2011 19:54:35 +0100 Subject: [PATCH] before removing an entry from an hash, revalidate whether we actualy found it --- citadel/modules/pop3client/serv_pop3client.c | 4 ++-- citadel/modules/rssclient/serv_rssclient.c | 18 ++++++++++-------- citadel/modules/smtp/serv_smtpqueue.c | 8 ++++---- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/citadel/modules/pop3client/serv_pop3client.c b/citadel/modules/pop3client/serv_pop3client.c index 8bd39899c..9e9ac87d0 100644 --- a/citadel/modules/pop3client/serv_pop3client.c +++ b/citadel/modules/pop3client/serv_pop3client.c @@ -165,8 +165,8 @@ eNextState FinalizePOP3AggrRun(AsyncIO *IO) It = GetNewHashPos(POP3FetchUrls, 0); pthread_mutex_lock(&POP3QueueMutex); { - GetHashPosFromKey(POP3FetchUrls, SKEY(cptr->Url), It); - DeleteEntryFromHash(POP3FetchUrls, It); + if (GetHashPosFromKey(POP3FetchUrls, SKEY(cptr->Url), It)) + DeleteEntryFromHash(POP3FetchUrls, It); } pthread_mutex_unlock(&POP3QueueMutex); DeleteHashPos(&It); diff --git a/citadel/modules/rssclient/serv_rssclient.c b/citadel/modules/rssclient/serv_rssclient.c index 79ba35c60..72717359a 100644 --- a/citadel/modules/rssclient/serv_rssclient.c +++ b/citadel/modules/rssclient/serv_rssclient.c @@ -101,14 +101,16 @@ void DeleteRoomReference(long QRnumber) At = GetNewHashPos(RSSQueueRooms, 0); - GetHashPosFromKey(RSSQueueRooms, LKEY(QRnumber), At); - GetHashPos(RSSQueueRooms, At, &HKLen, &HK, &vData); - if (vData != NULL) + if (GetHashPosFromKey(RSSQueueRooms, LKEY(QRnumber), At)) { - pRoomC = (rss_room_counter *) vData; - pRoomC->count --; - if (pRoomC->count == 0) - DeleteEntryFromHash(RSSQueueRooms, At); + GetHashPos(RSSQueueRooms, At, &HKLen, &HK, &vData); + if (vData != NULL) + { + pRoomC = (rss_room_counter *) vData; + pRoomC->count --; + if (pRoomC->count == 0) + DeleteEntryFromHash(RSSQueueRooms, At); + } } DeleteHashPos(&At); } @@ -146,7 +148,7 @@ void UnlinkRSSAggregator(rss_aggregator *Cfg) UnlinkRooms(Cfg); At = GetNewHashPos(RSSFetchUrls, 0); - if (GetHashPosFromKey(RSSFetchUrls, SKEY(Cfg->Url), At) == 0) + if (GetHashPosFromKey(RSSFetchUrls, SKEY(Cfg->Url), At)) { DeleteEntryFromHash(RSSFetchUrls, At); } diff --git a/citadel/modules/smtp/serv_smtpqueue.c b/citadel/modules/smtp/serv_smtpqueue.c index 5f22ee6fb..2197acf63 100644 --- a/citadel/modules/smtp/serv_smtpqueue.c +++ b/citadel/modules/smtp/serv_smtpqueue.c @@ -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); -- 2.30.2