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
|
Changelog
|
||||||
|
|
||||||
Daniel (25 October 2004)
|
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
|
- Mohun Biswas found out that formposting a zero-byte file didn't work very
|
||||||
good. I fixed.
|
good. I fixed.
|
||||||
|
|
||||||
|
@ -250,3 +250,6 @@ TODO
|
|||||||
|
|
||||||
They will instead become curlx_ - alternatives. That makes the curl app
|
They will instead become curlx_ - alternatives. That makes the curl app
|
||||||
still capable of building with them from source.
|
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)
|
if (k->httpcode < 400)
|
||||||
return 0;
|
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
|
** Any code >= 400 that's not 401 or 407 is always
|
||||||
** a terminal error
|
** a terminal error
|
||||||
|
@ -487,7 +487,6 @@ CURLcode Curl_readwrite(struct connectdata *conn,
|
|||||||
(100 == k->httpcode)?conn->headerbytecount:0;
|
(100 == k->httpcode)?conn->headerbytecount:0;
|
||||||
|
|
||||||
if (conn->resume_from &&
|
if (conn->resume_from &&
|
||||||
!k->content_range &&
|
|
||||||
(data->set.httpreq==HTTPREQ_GET) &&
|
(data->set.httpreq==HTTPREQ_GET) &&
|
||||||
(k->httpcode == 416)) {
|
(k->httpcode == 416)) {
|
||||||
/* "Requested Range Not Satisfiable" */
|
/* "Requested Range Not Satisfiable" */
|
||||||
@ -613,11 +612,20 @@ CURLcode Curl_readwrite(struct connectdata *conn,
|
|||||||
(k->httpcode >= 400) &&
|
(k->httpcode >= 400) &&
|
||||||
(k->httpcode != 401) &&
|
(k->httpcode != 401) &&
|
||||||
(k->httpcode != 407)) {
|
(k->httpcode != 407)) {
|
||||||
|
|
||||||
|
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! */
|
/* serious error, go home! */
|
||||||
failf (data, "The requested URL returned error: %d",
|
failf (data, "The requested URL returned error: %d",
|
||||||
k->httpcode);
|
k->httpcode);
|
||||||
return CURLE_HTTP_RETURNED_ERROR;
|
return CURLE_HTTP_RETURNED_ERROR;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(k->httpversion == 10)
|
if(k->httpversion == 10)
|
||||||
/* Default action for HTTP/1.0 must be to close, unless
|
/* Default action for HTTP/1.0 must be to close, unless
|
||||||
@ -954,7 +962,7 @@ CURLcode Curl_readwrite(struct connectdata *conn,
|
|||||||
/* we wanted to resume a download, although the server doesn't
|
/* we wanted to resume a download, although the server doesn't
|
||||||
* seem to support this and we did this with a GET (if it
|
* seem to support this and we did this with a GET (if it
|
||||||
* wasn't a GET we did a POST or PUT resume) */
|
* wasn't a GET we did a POST or PUT resume) */
|
||||||
failf (data, "HTTP server doesn't seem to support "
|
failf(data, "HTTP server doesn't seem to support "
|
||||||
"byte ranges. Cannot resume.");
|
"byte ranges. Cannot resume.");
|
||||||
return CURLE_HTTP_RANGE_ERROR;
|
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 \
|
test172 test204 test205 test173 test174 test175 test176 test177 \
|
||||||
test513 test514 test178 test179 test180 test181 test182 test183 \
|
test513 test514 test178 test179 test180 test181 test182 test183 \
|
||||||
test184 test185 test186 test187 test188 test189 test191 test192 \
|
test184 test185 test186 test187 test188 test189 test191 test192 \
|
||||||
test193
|
test193 test194
|
||||||
|
|
||||||
# The following tests have been removed from the dist since they no longer
|
# 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
|
# 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…
x
Reference in New Issue
Block a user