summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/ftp.c20
-rw-r--r--tests/data/test1052
-rw-r--r--tests/data/test1061
-rw-r--r--tests/data/test12952
-rw-r--r--tests/data/test1431
-rw-r--r--tests/data/test3364
-rw-r--r--tests/data/test3374
-rw-r--r--tests/data/test5621
8 files changed, 17 insertions, 68 deletions
diff --git a/lib/ftp.c b/lib/ftp.c
index cfccc390d..8de959c40 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -1747,13 +1747,19 @@ static CURLcode ftp_state_quote(struct Curl_easy *data,
result = ftp_state_retr(data, ftpc->known_filesize);
}
else {
- if(data->set.ignorecl) {
- /* This code is to support download of growing files. It prevents
- the state machine from requesting the file size from the
- server. With an unknown file size the download continues until
- the server terminates it, otherwise the client stops if the
- received byte count exceeds the reported file size. Set option
- CURLOPT_IGNORE_CONTENT_LENGTH to 1 to enable this behavior.*/
+ if(data->set.ignorecl || data->set.prefer_ascii) {
+ /* 'ignorecl' is used to support download of growing files. It
+ prevents the state machine from requesting the file size from
+ the server. With an unknown file size the download continues
+ until the server terminates it, otherwise the client stops if
+ the received byte count exceeds the reported file size. Set
+ option CURLOPT_IGNORE_CONTENT_LENGTH to 1 to enable this
+ behavior.
+
+ In addition: asking for the size for 'TYPE A' transfers is not
+ constructive since servers don't report the converted size. So
+ skip it.
+ */
result = Curl_pp_sendf(data, &ftpc->pp, "RETR %s", ftpc->file);
if(!result)
state(data, FTP_RETR);
diff --git a/tests/data/test105 b/tests/data/test105
index cc811aeb8..14679d17b 100644
--- a/tests/data/test105
+++ b/tests/data/test105
@@ -19,7 +19,6 @@ works
</data>
<servercmd>
REPLY EPSV 500 no such command
-REPLY SIZE 500 no such command
</servercmd>
</reply>
@@ -45,7 +44,6 @@ PWD
EPSV
PASV
TYPE A
-SIZE 105
RETR 105
QUIT
</protocol>
diff --git a/tests/data/test106 b/tests/data/test106
index 56eca6420..b7676f7a0 100644
--- a/tests/data/test106
+++ b/tests/data/test106
@@ -44,7 +44,6 @@ CWD path with spaces
CWD and things2
EPSV
TYPE A
-SIZE 106
RETR 106
QUIT
</protocol>
diff --git a/tests/data/test129 b/tests/data/test129
deleted file mode 100644
index cf1e8391d..000000000
--- a/tests/data/test129
+++ /dev/null
@@ -1,52 +0,0 @@
-<testcase>
-<info>
-<keywords>
-FTP
-EPSV
-TYPE A
-RETR
-type=
-</keywords>
-</info>
-# Server-side
-<reply>
-<size>
-37
-</size>
-<data>
-data
- to
- see
-that FTP
-works
- so does it?
-</data>
-</reply>
-
-# Client-side
-<client>
-<server>
-ftp
-</server>
- <name>
-FTP GET with type=A style ASCII URL and understated server SIZE
- </name>
- <command>
-"ftp://%HOSTIP:%FTPPORT/129;type=A"
-</command>
-</client>
-
-# Verify data after the test has been "shot"
-<verify>
-<protocol>
-USER anonymous
-PASS ftp@example.com
-PWD
-EPSV
-TYPE A
-SIZE 129
-RETR 129
-QUIT
-</protocol>
-</verify>
-</testcase>
diff --git a/tests/data/test143 b/tests/data/test143
index 0f36dd9c3..22bec3323 100644
--- a/tests/data/test143
+++ b/tests/data/test143
@@ -37,7 +37,6 @@ CWD tmp
CWD moo
EPSV
TYPE A
-SIZE 143
RETR 143
QUIT
</protocol>
diff --git a/tests/data/test336 b/tests/data/test336
index 85477c96c..cba846d4b 100644
--- a/tests/data/test336
+++ b/tests/data/test336
@@ -35,7 +35,7 @@ ftp
FTP range download when SIZE doesn't work
</name>
<command>
-ftp://%HOSTIP:%FTPPORT/336 --use-ascii --range 3-6
+ftp://%HOSTIP:%FTPPORT/336 --range 3-6
</command>
</client>
@@ -47,7 +47,7 @@ PASS ftp@example.com
PWD
EPSV
PASV
-TYPE A
+TYPE I
SIZE 336
REST 3
RETR 336
diff --git a/tests/data/test337 b/tests/data/test337
index 80086dda7..9ae4dfac5 100644
--- a/tests/data/test337
+++ b/tests/data/test337
@@ -35,7 +35,7 @@ ftp
FTP range download with SIZE returning extra crap
</name>
<command>
-ftp://%HOSTIP:%FTPPORT/337 --use-ascii --range 3-6
+ftp://%HOSTIP:%FTPPORT/337 --range 3-6
</command>
</client>
@@ -47,7 +47,7 @@ PASS ftp@example.com
PWD
EPSV
PASV
-TYPE A
+TYPE I
SIZE 337
REST 3
RETR 337
diff --git a/tests/data/test562 b/tests/data/test562
index 070cf7aa1..35f4f53d7 100644
--- a/tests/data/test562
+++ b/tests/data/test562
@@ -45,7 +45,6 @@ PASS ftp@example.com
PWD
EPSV
TYPE A
-SIZE 562
RETR 562
QUIT
</protocol>