mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 15:48:49 -05:00
Tomas Pospisek filed bug report #1053287 that proved -C - and --fail on a
file that was already completely downloaded caused an error, while it doesn't if you don't use --fail! I added test case 194 to verify the fix. Grrr. CURLOPT_FAILONERROR is now added to the list stuff to remove in libcurl v8 due to all the kludges needed to support it.
This commit is contained in:
parent
e1607f5705
commit
a00e7f0f5e
6
CHANGES
6
CHANGES
@ -7,6 +7,12 @@
|
||||
Changelog
|
||||
|
||||
Daniel (25 October 2004)
|
||||
- Tomas Pospisek filed bug report #1053287 that proved -C - and --fail on a
|
||||
file that was already completely downloaded caused an error, while it
|
||||
doesn't if you don't use --fail! I added test case 194 to verify the fix.
|
||||
Grrr. CURLOPT_FAILONERROR is now added to the list stuff to remove in
|
||||
libcurl v8 due to all the kludges needed to support it.
|
||||
|
||||
- Mohun Biswas found out that formposting a zero-byte file didn't work very
|
||||
good. I fixed.
|
||||
|
||||
|
@ -250,3 +250,6 @@ TODO
|
||||
|
||||
They will instead become curlx_ - alternatives. That makes the curl app
|
||||
still capable of building with them from source.
|
||||
|
||||
* Remove support for CURLOPT_FAILONERROR, it has gotten too kludgy and weird
|
||||
internally. Let the app judge success or not for itself.
|
||||
|
@ -553,6 +553,14 @@ int Curl_http_should_fail(struct connectdata *conn)
|
||||
if (k->httpcode < 400)
|
||||
return 0;
|
||||
|
||||
if (conn->resume_from &&
|
||||
(data->set.httpreq==HTTPREQ_GET) &&
|
||||
(k->httpcode == 416)) {
|
||||
/* "Requested Range Not Satisfiable", just proceed and
|
||||
pretend this is no error */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
** Any code >= 400 that's not 401 or 407 is always
|
||||
** a terminal error
|
||||
|
@ -487,7 +487,6 @@ CURLcode Curl_readwrite(struct connectdata *conn,
|
||||
(100 == k->httpcode)?conn->headerbytecount:0;
|
||||
|
||||
if (conn->resume_from &&
|
||||
!k->content_range &&
|
||||
(data->set.httpreq==HTTPREQ_GET) &&
|
||||
(k->httpcode == 416)) {
|
||||
/* "Requested Range Not Satisfiable" */
|
||||
@ -613,10 +612,19 @@ CURLcode Curl_readwrite(struct connectdata *conn,
|
||||
(k->httpcode >= 400) &&
|
||||
(k->httpcode != 401) &&
|
||||
(k->httpcode != 407)) {
|
||||
/* serious error, go home! */
|
||||
failf (data, "The requested URL returned error: %d",
|
||||
k->httpcode);
|
||||
return CURLE_HTTP_RETURNED_ERROR;
|
||||
|
||||
if (conn->resume_from &&
|
||||
(data->set.httpreq==HTTPREQ_GET) &&
|
||||
(k->httpcode == 416)) {
|
||||
/* "Requested Range Not Satisfiable", just proceed and
|
||||
pretend this is no error */
|
||||
}
|
||||
else {
|
||||
/* serious error, go home! */
|
||||
failf (data, "The requested URL returned error: %d",
|
||||
k->httpcode);
|
||||
return CURLE_HTTP_RETURNED_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
if(k->httpversion == 10)
|
||||
@ -954,8 +962,8 @@ CURLcode Curl_readwrite(struct connectdata *conn,
|
||||
/* we wanted to resume a download, although the server doesn't
|
||||
* seem to support this and we did this with a GET (if it
|
||||
* wasn't a GET we did a POST or PUT resume) */
|
||||
failf (data, "HTTP server doesn't seem to support "
|
||||
"byte ranges. Cannot resume.");
|
||||
failf(data, "HTTP server doesn't seem to support "
|
||||
"byte ranges. Cannot resume.");
|
||||
return CURLE_HTTP_RANGE_ERROR;
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,7 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \
|
||||
test172 test204 test205 test173 test174 test175 test176 test177 \
|
||||
test513 test514 test178 test179 test180 test181 test182 test183 \
|
||||
test184 test185 test186 test187 test188 test189 test191 test192 \
|
||||
test193
|
||||
test193 test194
|
||||
|
||||
# The following tests have been removed from the dist since they no longer
|
||||
# work. We need to fix the test suite's FTPS server first, then bring them
|
||||
|
46
tests/data/test194
Normal file
46
tests/data/test194
Normal file
@ -0,0 +1,46 @@
|
||||
# Server-side
|
||||
<reply>
|
||||
<data>
|
||||
HTTP/1.1 416 Requested Range Not Satisfiable swsclose
|
||||
Date: Fri, 24 Oct 2003 21:33:12 GMT
|
||||
Server: Apache/1.3.19 (Unix) (Red-Hat/Linux) mod_ssl/2.8.1 OpenSSL/0.9.6 PHP/4.3.1
|
||||
Last-Modified: Fri, 24 Oct 2003 18:01:23 GMT
|
||||
ETag: "ab57a-507-3f9968f3"
|
||||
Accept-Ranges: bytes
|
||||
Content-Length: 87
|
||||
Content-Range: bytes */87
|
||||
Content-Type: image/gif
|
||||
Connection: close
|
||||
|
||||
</data>
|
||||
|
||||
</reply>
|
||||
|
||||
# Client-side
|
||||
<client>
|
||||
<server>
|
||||
http
|
||||
</server>
|
||||
<name>
|
||||
HTTP resume transfer with the whole file already downloaded and --fail
|
||||
</name>
|
||||
<command>
|
||||
http://%HOSTIP:%HTTPPORT/want/194 -C 87 --fail
|
||||
</command>
|
||||
</client>
|
||||
|
||||
# Verify data after the test has been "shot"
|
||||
<verify>
|
||||
<strip>
|
||||
^User-Agent:.*
|
||||
</strip>
|
||||
<protocol>
|
||||
GET /want/194 HTTP/1.1
|
||||
Range: bytes=87-
|
||||
Host: 127.0.0.1:%HTTPPORT
|
||||
Pragma: no-cache
|
||||
Accept: */*
|
||||
|
||||
</protocol>
|
||||
|
||||
</verify>
|
Loading…
Reference in New Issue
Block a user