mirror of
https://github.com/moparisthebest/curl
synced 2025-03-02 10:21:46 -05:00
ftp: avoid SIZE when asking for a TYPE A file
... as we ignore it anyway because servers don't report the correct size and proftpd even blatantly returns a 550. Updates a set of tests accordingly. Reported-by: awesomenode on github Fixes #6564 Closes #6565
This commit is contained in:
parent
5f08a5acd5
commit
e32601e13a
20
lib/ftp.c
20
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);
|
||||
|
@ -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 \
|
||||
|
@ -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>
|
||||
|
@ -44,7 +44,6 @@ CWD path with spaces
|
||||
CWD and things2
|
||||
EPSV
|
||||
TYPE A
|
||||
SIZE 106
|
||||
RETR 106
|
||||
QUIT
|
||||
</protocol>
|
||||
|
@ -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>
|
@ -37,7 +37,6 @@ CWD tmp
|
||||
CWD moo
|
||||
EPSV
|
||||
TYPE A
|
||||
SIZE 143
|
||||
RETR 143
|
||||
QUIT
|
||||
</protocol>
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -45,7 +45,6 @@ PASS ftp@example.com
|
||||
PWD
|
||||
EPSV
|
||||
TYPE A
|
||||
SIZE 562
|
||||
RETR 562
|
||||
QUIT
|
||||
</protocol>
|
||||
|
Loading…
x
Reference in New Issue
Block a user