Comment 7 for bug 412244

Revision history for this message
Alexander Regueiro (alexreg) wrote : Re: unlock fails to unlock over FTP with Windows FTP server (Microsoft FTP Service IIS6)

Attached is a script file for the Windows command-line FTP client, which reproduces this precise issue.

In general, the result is that the script suceeds in retrieving the info file with the final get command - it clearly should not, because it's parent folder ought to have previously been renamed and deleted. The log produced in this case is the following:

230 User alexreg-repos logged in.
ftp> mkd /texdotnet
257 "/texdotnet" directory created.
ftp> mkd /texdotnet/.bzr
257 "/texdotnet/.bzr" directory created.
ftp> mkd /texdotnet/.bzr/branch-lock
257 "/texdotnet/.bzr/branch-lock" directory created.
ftp> mkd /texdotnet/.bzr/branch-lock/0u7zlmi2ue.tmp
257 "/texdotnet/.bzr/branch-lock/0u7zlmi2ue.tmp" directory created.
ftp> put info /texdotnet/.bzr/branch-lock/0u7zlmi2ue.tmp/info
200 PORT command successful.
150 Opening ASCII mode data connection for /texdotnet/.bzr/branch-lock/0u7zlmi2u
e.tmp/info.
226 Transfer complete.
ftp: 115 bytes sent in 0.14Seconds 0.82Kbytes/sec.
ftp> rename /texdotnet/.bzr/branch-lock/0u7zlmi2ue.tmp /texdotnet/.bzr/branch-lo
ck/held
350 File exists, ready for destination name
250 RNTO command successful.
ftp> get /texdotnet/.bzr/branch-lock/held/info info-got
200 PORT command successful.
150 Opening ASCII mode data connection for /texdotnet/.bzr/branch-lock/held/info
(115 bytes).
226 Transfer complete.
ftp: 115 bytes received in 0.00Seconds 115000.00Kbytes/sec.
ftp> rename /texdotnet/.bzr/branch-lock/held /texdotnet/.bzr/branch-lock/releasi
ng.jxclhhpmuppakcm6gbz7.tmp
350 File exists, ready for destination name
250 RNTO command successful.
ftp> delete /texdotnet/.bzr/branch-lock/releasing.jxclhhpmuppakcm6gbz7.tmp/info
250 DELE command successful.
ftp> rm /texdotnet/.bzr/branch-lock/releasing.jxclhhpmuppakcm6gbz7.tmp/info
550 /texdotnet/.bzr/branch-lock/releasing.jxclhhpmuppakcm6gbz7.tmp/info: The sys
tem cannot find the file specified.
ftp> rmd /texdotnet/.bzr/branch-lock/releasing.jxclhhpmuppakcm6gbz7.tmp
250 RMD command successful.
ftp> get /texdotnet/.bzr/branch-lock/held/info
200 PORT command successful.
150 Opening ASCII mode data connection for /texdotnet/.bzr/branch-lock/held/info
(115 bytes).
226 Transfer complete.
ftp: 115 bytes received in 0.00Seconds 115000.00Kbytes/sec.
ftp> quit
221

As previously suggested, this would seem to imply one of two things:
* The rename and/or delete commands report success before their operations have actually concluded.
* The directory that exists before the rename/delete is cached, and the FTP server is using this cache for the final get command, hence its unexpected success.

On many occasions however, the script does not even finish, seemingly due to a failed attempt to open a data connection.

230 User alexreg-repos logged in.
ftp> mkd /texdotnet
257 "/texdotnet" directory created.
ftp> mkd /texdotnet/.bzr
257 "/texdotnet/.bzr" directory created.
ftp> mkd /texdotnet/.bzr/branch-lock
257 "/texdotnet/.bzr/branch-lock" directory created.
ftp> mkd /texdotnet/.bzr/branch-lock/0u7zlmi2ue.tmp
257 "/texdotnet/.bzr/branch-lock/0u7zlmi2ue.tmp" directory created.
ftp> put info /texdotnet/.bzr/branch-lock/0u7zlmi2ue.tmp/info
200 PORT command successful.
150 Opening ASCII mode data connection for /texdotnet/.bzr/branch-lock/0u7zlmi2u
e.tmp/info.
226 Transfer complete.
ftp: 115 bytes sent in 0.18Seconds 0.65Kbytes/sec.
ftp> rename /texdotnet/.bzr/branch-lock/0u7zlmi2ue.tmp /texdotnet/.bzr/branch-lo
ck/held
350 File exists, ready for destination name
250 RNTO command successful.
ftp> get /texdotnet/.bzr/branch-lock/held/info info-got
500 Invalid PORT Command.
150 Opening ASCII mode data connection for /texdotnet/.bzr/branch-lock/held/info
(115 bytes).

I do however suspect this may be an unrelated issue. (I seem to remember encountering it before with other servers, using Windows FTP client.)