]> granicus.if.org Git - curl/commitdiff
Daniel Noguerol made the ftp code output "Accept-Ranges: bytes" in similar
authorDaniel Stenberg <daniel@haxx.se>
Wed, 30 Jul 2003 07:51:33 +0000 (07:51 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Wed, 30 Jul 2003 07:51:33 +0000 (07:51 +0000)
style like other faked HTTP headers when NOBODY and HEADER are used.

lib/ftp.c

index 3cbaf663d2141bad4ffe45569ed7dccc95a40bd0..bfe6e7a4662f07516dc9be9af618a4c594e8aaca 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -2032,6 +2032,8 @@ CURLcode ftp_perform(struct connectdata *conn,
        may not support it! It is however the only way we have to get a file's
        size! */
     ssize_t filesize;
+    ssize_t nread;
+    int ftpcode;
 
     ftp->no_transfer = TRUE; /* this means no actual transfer is made */
     
@@ -2051,6 +2053,18 @@ CURLcode ftp_perform(struct connectdata *conn,
         return result;
     }
 
+    /* Determine if server can respond to REST command and therefore
+       whether it can do a range */
+    FTPSENDF(conn, "REST 0", NULL);
+    result = Curl_GetFTPResponse(&nread, conn, &ftpcode);
+
+    if ((CURLE_OK == result) && (ftpcode == 350)) {
+      result = Curl_client_write(data, CLIENTWRITE_BOTH,
+                                 (char *)"Accept-ranges: bytes\r\n", 0);
+      if(result)
+        return result;
+    }
+
     /* If we asked for a time of the file and we actually got one as
        well, we "emulate" a HTTP-style header in our output. */