1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-21 23:58:49 -05:00

HTTP: remove special case for 416

It was pointed out that the special case libcurl did for 416 was
incorrect and wrong. 416 is not really different to other errors so the
response body must be handled like for other errors/http responses.

Reported by: Chris Smowton
Bug: http://curl.haxx.se/bug/view.cgi?id=3076808
This commit is contained in:
Daniel Stenberg 2010-10-02 00:22:48 +02:00
parent 15622e69a9
commit 2ae6c47d5d
3 changed files with 5 additions and 16 deletions

View File

@ -3293,13 +3293,6 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
data->req.deductheadercount = data->req.deductheadercount =
(100 <= k->httpcode && 199 >= k->httpcode)?data->req.headerbytecount:0; (100 <= k->httpcode && 199 >= k->httpcode)?data->req.headerbytecount:0;
if(data->state.resume_from &&
(data->set.httpreq==HTTPREQ_GET) &&
(k->httpcode == 416)) {
/* "Requested Range Not Satisfiable" */
*stop_reading = TRUE;
}
if(!*stop_reading) { if(!*stop_reading) {
/* Curl_http_auth_act() checks what authentication methods /* Curl_http_auth_act() checks what authentication methods
* that are available and decides which one (if any) to * that are available and decides which one (if any) to
@ -3512,9 +3505,6 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
* message-body, and thus is always terminated by the first * message-body, and thus is always terminated by the first
* empty line after the header fields. */ * empty line after the header fields. */
/* FALLTHROUGH */ /* FALLTHROUGH */
case 416: /* Requested Range Not Satisfiable, it has the
Content-Length: set as the "real" document but no
actual response is sent. */
case 304: case 304:
/* (quote from RFC2616, section 10.3.5): The 304 response /* (quote from RFC2616, section 10.3.5): The 304 response
* MUST NOT contain a message-body, and thus is always * MUST NOT contain a message-body, and thus is always
@ -3546,10 +3536,7 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
/* Curl_convert_from_network calls failf if unsuccessful */ /* Curl_convert_from_network calls failf if unsuccessful */
#endif /* CURL_DOES_CONVERSIONS */ #endif /* CURL_DOES_CONVERSIONS */
/* Check for Content-Length: header lines to get size. Ignore /* Check for Content-Length: header lines to get size */
the header completely if we get a 416 response as then we're
resuming a document that we don't get, and this header contains
info about the true size of the document we didn't get now. */
if(!k->ignorecl && !data->set.ignorecl && if(!k->ignorecl && !data->set.ignorecl &&
checkprefix("Content-Length:", k->p)) { checkprefix("Content-Length:", k->p)) {
curl_off_t contentlength = curlx_strtoofft(k->p+15, NULL, 10); curl_off_t contentlength = curlx_strtoofft(k->p+15, NULL, 10);

View File

@ -17,11 +17,12 @@ Server: Apache/1.3.19 (Unix) (Red-Hat/Linux) mod_ssl/2.8.1 OpenSSL/0.9.6 PHP/4.
Last-Modified: Fri, 24 Oct 2003 18:01:23 GMT Last-Modified: Fri, 24 Oct 2003 18:01:23 GMT
ETag: "ab57a-507-3f9968f3" ETag: "ab57a-507-3f9968f3"
Accept-Ranges: bytes Accept-Ranges: bytes
Content-Length: 87 Content-Length: 4
Content-Range: bytes */87 Content-Range: bytes */87
Content-Type: image/gif Content-Type: image/gif
Connection: close Connection: close
bad
</data> </data>
</reply> </reply>

View File

@ -17,10 +17,11 @@ Server: Apache/1.3.19 (Unix) (Red-Hat/Linux) mod_ssl/2.8.1 OpenSSL/0.9.6 PHP/4.
Last-Modified: Fri, 24 Oct 2003 18:01:23 GMT Last-Modified: Fri, 24 Oct 2003 18:01:23 GMT
ETag: "ab57a-507-3f9968f3" ETag: "ab57a-507-3f9968f3"
Accept-Ranges: bytes Accept-Ranges: bytes
Content-Length: 87 Content-Length: 4
Content-Range: bytes */87 Content-Range: bytes */87
Content-Type: image/gif Content-Type: image/gif
bad
</data> </data>
</reply> </reply>