Resume is now done with a Content-Range header instead of a Range header if
authorDaniel Stenberg <daniel@haxx.se>
Sat, 27 Jan 2001 18:57:07 +0000 (18:57 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Sat, 27 Jan 2001 18:57:07 +0000 (18:57 +0000)
the request isn't GET. Presumably, this is how it should be made.

lib/http.c

index a9b9c5d977b207f17ffcfc9d99529b68a320b256..7553b613b3ffe2ab201323321a52ab558fbfd2f3 100644 (file)
@@ -429,8 +429,21 @@ CURLcode Curl_http(struct connectdata *conn)
       }
     }
   }
-  if((data->bits.set_range) && !checkheaders(data, "Range:")) {
-    data->ptr_rangeline = aprintf("Range: bytes=%s\015\012", data->range);
+  if(data->bits.set_range) {
+    /*
+     * A range is selected. We use different headers whether we're downloading
+     * or uploading and we always let customized headers override our internal
+     * ones if any such are specified.
+     */
+    if((data->httpreq == HTTPREQ_GET) &&
+       !checkheaders(data, "Range:")) {
+      data->ptr_rangeline = aprintf("Range: bytes=%s\015\012", data->range);
+    }
+    else if((data->httpreq != HTTPREQ_GET) &&
+            !checkheaders(data, "Content-Range:")) {
+      data->ptr_rangeline = aprintf("Content-Range: bytes=%s\015\012",
+                                    data->range);
+    }
   }
   if((data->bits.http_set_referer) && !checkheaders(data, "Referer:")) {
     data->ptr_ref = aprintf("Referer: %s\015\012", data->referer);