aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/http.c8
-rw-r--r--lib/transfer.c22
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;
}