Hi, this is the second try to get feedback and  to make a fix to 
ftp_size() function.
After bringing that issue up a few days back, I got response from Derick 
only with some concerns, which I'll address here.
Please, respond or I'll just apply the patch because it makes sense to 
me and see what happens.


First of all, ftp_size() function is broken. It will return different 
results for the same file depending on what function was called before 
it. To fix it, we have to set the mode of the ftp server session to 
BINARY rather than ASCII. It is a one-liner patch.

Derick was concerned that this will change the state of the session 
without the user explicitly requesting it and we do not restore it. 
However, this is irrelevant since all the functions that depend on that 
state will set it for themselves:
- ftp_nlist() and ftp_rawlist() already do just that - they just set the 
type to ASCII and do not restore it.
- ftp_get(), ftp_fget(), ftp_put() and ftp_fput() require you to set the 
type explicitly
- other functions do not depend on transfer type (except for ftp_size() ).

It was an obvious oversight not to make ftp_size() set the mode before 
requesting the size of a file (I would have never imagined that the size 
of the file differs depending on whether we do 'dir' in text mode or 
binary mode... duh!)

So, to wrap it up. Making that change will not affect *any* other 
functionality of the ftp extension (you are welcome to read through the 
source - I just did that) and will fix ftp_size() to consistently return 
correct results.

Question: Does anybody object to putting that change in, *and* also 
merging it into the release branch? This is an obvious bug, and the fix 
doesn't affect anything else.

Vlad




-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to