]> granicus.if.org Git - curl/commitdiff
changed order of the range and follow-location checks so that a range-request
authorDaniel Stenberg <daniel@haxx.se>
Tue, 30 Jan 2001 11:52:59 +0000 (11:52 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 30 Jan 2001 11:52:59 +0000 (11:52 +0000)
will work even when following a Location:

lib/transfer.c

index 0099297dc680eac6b28ac56222c8fe0f9194a7c8..09c1262cb97492c096aaaf8c6d3e002c8eb90dbe 100644 (file)
@@ -444,9 +444,14 @@ _Transfer(struct connectdata *c_conn)
                  write a chunk of the body */
               if(conn->protocol&PROT_HTTP) {
                 /* HTTP-only checks */
-                if (data->resume_from &&
-                    !content_range &&
-                    (data->httpreq==HTTPREQ_GET)) {
+                if (data->newurl) {
+                  /* abort after the headers if "follow Location" is set */
+                  infof (data, "Follow to new URL: %s\n", data->newurl);
+                  return CURLE_OK;
+                }
+                else if (data->resume_from &&
+                         !content_range &&
+                         (data->httpreq==HTTPREQ_GET)) {
                   /* 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) */
@@ -454,11 +459,6 @@ _Transfer(struct connectdata *c_conn)
                          "byte ranges. Cannot resume.");
                   return CURLE_HTTP_RANGE_ERROR;
                 }
-                else if (data->newurl) {
-                  /* abort after the headers if "follow Location" is set */
-                  infof (data, "Follow to new URL: %s\n", data->newurl);
-                  return CURLE_OK;
-                }
                 else if(data->timecondition && !data->range) {
                   /* A time condition has been set AND no ranges have been
                      requested. This seems to be what chapter 13.3.4 of