Bug 1544190 - Check if the record is in the queue, r=necko-reviewers,valentin

Differential Revision: https://phabricator.services.mozilla.com/D116261
This commit is contained in:
Kershaw Chang 2021-06-07 16:46:00 +00:00
Родитель 38445f68e0
Коммит dbd1cacb9f
1 изменённых файлов: 16 добавлений и 5 удалений

Просмотреть файл

@ -1350,11 +1350,18 @@ void nsHostResolver::MaybeRenewHostRecord(nsHostRecord* aRec) {
void nsHostResolver::MaybeRenewHostRecordLocked(nsHostRecord* aRec) {
mLock.AssertCurrentThreadOwns();
if (aRec->isInList()) {
MOZ_DIAGNOSTIC_ASSERT(!mHighQ.contains(aRec), "Already in high queue");
MOZ_DIAGNOSTIC_ASSERT(!mMediumQ.contains(aRec), "Already in med queue");
MOZ_DIAGNOSTIC_ASSERT(!mLowQ.contains(aRec), "Already in low queue");
bool inEvictionQ = mEvictionQ.contains(aRec);
MOZ_DIAGNOSTIC_ASSERT(inEvictionQ, "Should be in eviction queue");
// we're already on the eviction queue. This is a renewal
MOZ_ASSERT(mEvictionQSize);
AssertOnQ(aRec, mEvictionQ);
aRec->remove();
mEvictionQSize--;
if (inEvictionQ) {
MOZ_DIAGNOSTIC_ASSERT(mEvictionQSize > 0);
mEvictionQSize--;
}
}
}
@ -1837,8 +1844,8 @@ static bool different_rrset(AddrInfo* rrset1, AddrInfo* rrset2) {
void nsHostResolver::AddToEvictionQ(nsHostRecord* rec) {
if (rec->isInList()) {
MOZ_DIAGNOSTIC_ASSERT(!mEvictionQ.contains(rec),
"Already in eviction queue");
bool inEvictionQ = mEvictionQ.contains(rec);
MOZ_DIAGNOSTIC_ASSERT(!inEvictionQ, "Already in eviction queue");
MOZ_DIAGNOSTIC_ASSERT(!mHighQ.contains(rec), "Already in high queue");
MOZ_DIAGNOSTIC_ASSERT(!mMediumQ.contains(rec), "Already in med queue");
MOZ_DIAGNOSTIC_ASSERT(!mLowQ.contains(rec), "Already in low queue");
@ -1847,6 +1854,10 @@ void nsHostResolver::AddToEvictionQ(nsHostRecord* rec) {
// Bug 1678117 - it's not clear why this can happen, but let's fix it
// for release users.
rec->remove();
if (inEvictionQ) {
MOZ_DIAGNOSTIC_ASSERT(mEvictionQSize > 0);
mEvictionQSize--;
}
}
mEvictionQ.insertBack(rec);
if (mEvictionQSize < mMaxCacheEntries) {