]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Again, fix bandwidth spikes seen when the origin server did not process
authorhno <>
Fri, 13 Apr 2001 20:59:11 +0000 (20:59 +0000)
committerhno <>
Fri, 13 Apr 2001 20:59:11 +0000 (20:59 +0000)
a range request.

Ideally the whole "we_do_ranges" check should only be done once, and replies
should only be range processed if this is true. Currently we have the check
in two, maybe even three places is seems.

src/client_side.cc

index e232d859d5082a064424d6f9a36ec8e0acc6268a..fa10dcc2806e19867626299ff17c46dbee535696 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: client_side.cc,v 1.532 2001/03/04 00:54:48 wessels Exp $
+ * $Id: client_side.cc,v 1.533 2001/04/13 14:59:11 hno Exp $
  *
  * DEBUG: section 33    Client-side Routines
  * AUTHOR: Duane Wessels
@@ -1147,6 +1147,7 @@ clientBuildRangeHeader(clientHttpRequest * http, HttpReply * rep)
     HttpHeader *hdr = rep ? &rep->header : 0;
     const char *range_err = NULL;
     request_t *request = http->request;
+    int is_hit = isTcpHit(http->log_type);
     assert(request->range);
     /* check if we still want to do ranges */
     if (!rep)
@@ -1167,6 +1168,8 @@ clientBuildRangeHeader(clientHttpRequest * http, HttpReply * rep)
        range_err = "too complex range header";
     else if (!request->flags.cachable) /* from we_do_ranges in http.c */
        range_err = "non-cachable request";
+    else if (!is_hit && httpHdrRangeOffsetLimit(http->request->range))
+       range_err = "range outside range_offset_limit";
     /* get rid of our range specs on error */
     if (range_err) {
        debug(33, 3) ("clientBuildRangeHeader: will not do ranges: %s.\n", range_err);