]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Declare already-too-large objects with yet-unknown size as impossible to swap.
authorAlex Rousskov <rousskov@measurement-factory.com>
Tue, 6 Sep 2011 21:18:21 +0000 (15:18 -0600)
committerAlex Rousskov <rousskov@measurement-factory.com>
Tue, 6 Sep 2011 21:18:21 +0000 (15:18 -0600)
The original check for yet-unknown size was blocking the already-too-large check.

Amos Jeffries has identified this bug during an earlier review.

src/store.cc

index 69da893ac8448c012a9402497aa713338992546f..72a127e9404fa321f0d792de11479032697ae656 100644 (file)
@@ -1948,11 +1948,6 @@ StoreEntry::swapoutPossible()
             decision = MemObject::SwapOut::swImpossible;
             return false; // known to outgrow the limit eventually
         }
-        if (expectedEnd < 0) {
-            debugs(20, 3, "storeSwapOut: wait for more info: " <<
-                store_maxobjsize);
-            return false; // may fit later, but will be rejected now
-        }
 
         // use current minimum (always known)
         const int64_t currentEnd = mem_obj->endOffset();
@@ -1962,6 +1957,13 @@ StoreEntry::swapoutPossible()
             decision = MemObject::SwapOut::swImpossible;
             return false; // already does not fit and may only get bigger
         }
+
+        // prevent default swPossible answer for yet unknown length
+        if (expectedEnd < 0) {
+            debugs(20, 3, "storeSwapOut: wait for more info: " <<
+                store_maxobjsize);
+            return false; // may fit later, but will be rejected now
+        }
     }
 
     decision = MemObject::SwapOut::swPossible;