From: serassio <> Date: Tue, 6 Jun 2006 00:57:08 +0000 (+0000) Subject: Bug #1468: Crash on HttpHdrRange.cc line 568: assertion failed on "valid" X-Git-Tag: SQUID_3_0_PRE4~43 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0ef772703f2dcec03024d4a0a0300575363c501e;p=thirdparty%2Fsquid.git Bug #1468: Crash on HttpHdrRange.cc line 568: assertion failed on "valid" Patch provided by Doug Dixon --- diff --git a/src/client_side_request.cc b/src/client_side_request.cc index 150be600ec..5a2f1a9cc3 100644 --- a/src/client_side_request.cc +++ b/src/client_side_request.cc @@ -1,6 +1,6 @@ /* - * $Id: client_side_request.cc,v 1.69 2006/05/29 21:44:18 robertc Exp $ + * $Id: client_side_request.cc,v 1.70 2006/06/05 18:57:08 serassio Exp $ * * DEBUG: section 85 Client-side Request Routines * AUTHOR: Robert Collins (Originally Duane Wessels in client_side.c) @@ -618,7 +618,7 @@ static void clientInterpretRequestHeaders(ClientHttpRequest * http) { HttpRequest *request = http->request; - const HttpHeader *req_hdr = &request->header; + HttpHeader *req_hdr = &request->header; int no_cache = 0; #if !(ESI) || defined(USE_USERAGENT_LOG) || defined(USE_REFERER_LOG) @@ -687,8 +687,8 @@ clientInterpretRequestHeaders(ClientHttpRequest * http) request->flags.nocache = 1; } - /* ignore range header in non-GETs */ - if (request->method == METHOD_GET) { + /* ignore range header in non-GETs or non-HEADs */ + if (request->method == METHOD_GET || request->method == METHOD_HEAD) { request->range = req_hdr->getRange(); if (request->range) { @@ -707,6 +707,15 @@ clientInterpretRequestHeaders(ClientHttpRequest * http) } } + /* Only HEAD and GET requests permit a Range or Request-Range header. + * If these headers appear on any other type of request, delete them now. + */ + else { + req_hdr->delById(HDR_RANGE); + req_hdr->delById(HDR_REQUEST_RANGE); + request->range = NULL; + } + if (req_hdr->has(HDR_AUTHORIZATION)) request->flags.auth = 1;