diff options
author | Daniel Stenberg <daniel@haxx.se> | 2004-10-25 11:28:40 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2004-10-25 11:28:40 +0000 |
commit | a00e7f0f5ecd8fd93951a85ef86eb8b3c58f092e (patch) | |
tree | 98a1749e2b2473bc5052d6ea068a503c1e1c91ed /lib | |
parent | e1607f5705a3b905dcc08cba2a09266ba6c308ef (diff) |
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.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/http.c | 8 | ||||
-rw-r--r-- | lib/transfer.c | 22 |
2 files changed, 23 insertions, 7 deletions
diff --git a/lib/http.c b/lib/http.c index 80484975f..ee5b81ff6 100644 --- a/lib/http.c +++ b/lib/http.c @@ -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 diff --git a/lib/transfer.c b/lib/transfer.c index 14512a774..904dbd15b 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -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; } |