]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Polish quick_abort feature decision code
authorAmos Jeffries <squid3@treenet.co.nz>
Mon, 28 Jan 2013 11:23:27 +0000 (04:23 -0700)
committerAmos Jeffries <squid3@treenet.co.nz>
Mon, 28 Jan 2013 11:23:27 +0000 (04:23 -0700)
Also, fixes a defect identified by Coverity Scan issues 740376, 740456

src/store_client.cc

index 5275dafea620562bfe6ec0de16c356309fbb637e..5c1f34f01d3132a4858db6dba1a8ab5bcbf5cfb1 100644 (file)
@@ -61,7 +61,7 @@ static StoreIOState::STRCB storeClientReadBody;
 static StoreIOState::STRCB storeClientReadHeader;
 static void storeClientCopy2(StoreEntry * e, store_client * sc);
 static EVH storeClientCopyEvent;
-static int CheckQuickAbort2(StoreEntry * entry);
+static bool CheckQuickAbortIsReasonable(StoreEntry * entry);
 static void CheckQuickAbort(StoreEntry * entry);
 
 CBDATA_CLASS_INIT(store_client);
@@ -781,72 +781,72 @@ storePendingNClients(const StoreEntry * e)
     return npend;
 }
 
-/* return 1 if the request should be aborted */
-static int
-CheckQuickAbort2(StoreEntry * entry)
+/* return true if the request should be aborted */
+static bool
+CheckQuickAbortIsReasonable(StoreEntry * entry)
 {
     MemObject * const mem = entry->mem_obj;
     assert(mem);
-    debugs(90, 3, "CheckQuickAbort2: entry=" << entry << ", mem=" << mem);
+    debugs(90, 3, "entry=" << entry << ", mem=" << mem);
 
     if (mem->request && !mem->request->flags.cachable) {
-        debugs(90, 3, "CheckQuickAbort2: YES !mem->request->flags.cachable");
-        return 1;
+        debugs(90, 3, "quick-abort? YES !mem->request->flags.cachable");
+        return true;
     }
 
     if (EBIT_TEST(entry->flags, KEY_PRIVATE)) {
-        debugs(90, 3, "CheckQuickAbort2: YES KEY_PRIVATE");
-        return 1;
+        debugs(90, 3, "quick-abort? YES KEY_PRIVATE");
+        return true;
     }
 
     int64_t expectlen = entry->getReply()->content_length + entry->getReply()->hdr_sz;
 
-    if (expectlen < 0)
+    if (expectlen < 0) {
         /* expectlen is < 0 if *no* information about the object has been received */
-        return 1;
+        debugs(90, 3, "quick-abort? YES no object data received yet");
+        return true;
+    }
 
-    int64_t curlen =  mem->endOffset ();
+    int64_t curlen =  mem->endOffset();
 
     if (Config.quickAbort.min < 0) {
-        debugs(90, 3, "CheckQuickAbort2: NO disabled");
-        return 0;
+        debugs(90, 3, "quick-abort? NO disabled");
+        return false;
     }
 
-    int64_t roffLimit = mem->request->getRangeOffsetLimit();
-
-    if ( roffLimit < 0 && mem->request && mem->request->range ) {
+    if (mem->request && mem->request->range && mem->request->getRangeOffsetLimit() < 0) {
         /* Don't abort if the admin has configured range_ofset -1 to download fully for caching. */
-        debugs(90, 3, "CheckQuickAbort2: NO admin configured range replies to full-download");
-        return 0;
+        debugs(90, 3, "quick-abort? NO admin configured range replies to full-download");
+        return false;
     }
 
     if (curlen > expectlen) {
-        debugs(90, 3, "CheckQuickAbort2: YES bad content length");
-        return 1;
+        debugs(90, 3, "quick-abort? YES bad content length");
+        return true;
     }
 
     if ((expectlen - curlen) < (Config.quickAbort.min << 10)) {
-        debugs(90, 3, "CheckQuickAbort2: NO only little more left");
-        return 0;
+        debugs(90, 3, "quick-abort? NO only a little more object left to receive");
+        return false;
     }
 
     if ((expectlen - curlen) > (Config.quickAbort.max << 10)) {
-        debugs(90, 3, "CheckQuickAbort2: YES too much left to go");
-        return 1;
+        debugs(90, 3, "quick-abort? YES too much left to go");
+        return true;
     }
 
     if (expectlen < 100) {
-        debugs(90, 3, "CheckQuickAbort2: NO avoid FPE");
-        return 0;
+        debugs(90, 3, "quick-abort? NO avoid FPE");
+        return false;
     }
 
     if ((curlen / (expectlen / 100)) > (Config.quickAbort.pct)) {
-        debugs(90, 3, "CheckQuickAbort2: NO past point of no return");
-        return 0;
+        debugs(90, 3, "quick-abort? NO past point of no return");
+        return false;
     }
 
-    debugs(90, 3, "CheckQuickAbort2: YES default, returning 1");
-    return 1;
+    debugs(90, 3, "quick-abort? YES default");
+    return true;
 }
 
 static void
@@ -863,7 +863,7 @@ CheckQuickAbort(StoreEntry * entry)
     if (EBIT_TEST(entry->flags, ENTRY_SPECIAL))
         return;
 
-    if (CheckQuickAbort2(entry) == 0)
+    if (!CheckQuickAbortIsReasonable(entry))
         return;
 
     entry->abort();