aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2003-07-30 07:51:33 +0000
committerDaniel Stenberg <daniel@haxx.se>2003-07-30 07:51:33 +0000
commite3b4dd08ffcffc46965f5927c30e1390f6754da3 (patch)
treec0340243e91008436b943366a375bc452343ed9b /lib
parent6809a906bb70d43335a22df499c98a035d27c716 (diff)
Daniel Noguerol made the ftp code output "Accept-Ranges: bytes" in similar
style like other faked HTTP headers when NOBODY and HEADER are used.
Diffstat (limited to 'lib')
-rw-r--r--lib/ftp.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/ftp.c b/lib/ftp.c
index 3cbaf663d..bfe6e7a46 100644
--- 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. */