diff options
-rw-r--r-- | lib/ftp.c | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -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. */ |