quinta-feira, 29 de novembro de 2007

Bug no cliente FTP do Windows

Dizem que uma imagem vale mais que mil palavras, então vejam esta:

Pra quem não se deu ao trabalho de entender, o enredo é o seguinte. Estou numa janela de comandos do Windows e num diretório que contém um arquivo chamado file.txt contendo oito bytes. Daí eu invoco o comando de linha "ftp" e me conecto a um servidor remoto. Verifico que não existe no servidor FTP um arquivo com o mesmo nome e me engano usando o comando "get file.txt" ao invés do "put file.txt".

A mensagem de erro "550 file.txt: No such file or directory" é bastante clara e indica exatamente o que eu fiz de errado. Mas... ao sair do comando ftp e listar o conteúdo do diretório local sou surpreendido ao ver que o arquivo file.txt foi truncado e está com zero bytes!

Parece que quando fazemos um "get" no ftp do Windows ele abre o arquivo pra escrita antes de verificar se o arquivo existe no servidor FTP. Nesse caso, a abertura pra escrita trunca o arquivo local e o deixa com tamanho 0.

Um colega me disse que no Windows 98 e no Windows 2000 o arquivo local é removido do diretório. O exemplo acima foi executado num Windows XP, que não remove o arquivo mas o deixa vazio. Parece que eles estão melhorando... alguém pode testar no Windows Vista pra ver se já está corrigido? :-)

Em tempo, testei na minha máquina Linux (Kubuntu 7.04) e o problema não ocorre.