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/Makefile.inc b/tests/data/Makefile.inc index 5ebf049b8..6b6f2bc5f 100644 --- a/tests/data/Makefile.inc +++ b/tests/data/Makefile.inc @@ -34,7 +34,7 @@ test90 test91 test92 test93 test94 test95 test96 test97 test98 test99 \ test100 test101 test102 test103 test104 test105 test106 test107 test108 \ test109 test110 test111 test112 test113 test114 test115 test116 test117 \ test118 test119 test120 test121 test122 test123 test124 test125 test126 \ -test127 test128 test129 test130 test131 test132 test133 test134 test135 \ +test127 test128 test130 test131 test132 test133 test134 test135 \ test136 test137 test138 test139 test140 test141 test142 test143 test144 \ test145 test146 test147 test148 test149 test150 test151 test152 test153 \ test154 test155 test156 test157 test158 test159 test160 test161 test162 \ 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 REPLY EPSV 500 no such command -REPLY SIZE 500 no such command @@ -45,7 +44,6 @@ PWD EPSV PASV TYPE A -SIZE 105 RETR 105 QUIT 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 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 @@ - - - -FTP -EPSV -TYPE A -RETR -type= - - -# Server-side - - -37 - - -data - to - see -that FTP -works - so does it? - - - -# Client-side - - -ftp - - -FTP GET with type=A style ASCII URL and understated server SIZE - - -"ftp://%HOSTIP:%FTPPORT/129;type=A" - - - -# Verify data after the test has been "shot" - - -USER anonymous -PASS ftp@example.com -PWD -EPSV -TYPE A -SIZE 129 -RETR 129 -QUIT - - - 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 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 -ftp://%HOSTIP:%FTPPORT/336 --use-ascii --range 3-6 +ftp://%HOSTIP:%FTPPORT/336 --range 3-6 @@ -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 -ftp://%HOSTIP:%FTPPORT/337 --use-ascii --range 3-6 +ftp://%HOSTIP:%FTPPORT/337 --range 3-6 @@ -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