I recently began to use lftp for website uploads under windows-ME.
First, thank you Mr. Lukyanov for creating and sharing such a useful
tool.  This program looks like it will work much better than any of
the other solutions I have tried.


Unfortunately, there appears to be a problem running under windows_ME.
I've tried using the 2.6.6 cygwin package and also the 2.6.8 release
that I built myself under cygwin.  Both versions show the same symptom.

Under windows-2000, the exact same executable/build works with no problem.
Under windows-ME, all of windows-ftp, cygwin ftp, and ncftp work with
no problem.  The only combination that fails is lftp + windowsME.


I've seen references to the symptom in the mailing list archives,
but none of the solutions offered so far appear to address this
specific problem.  After STORing a file, lftp hangs while waiting for
the acknowledgement from the server.  Looking at the snoop log, the
server appears to be waiting for lftp to close the data session before
it sends the 226 acknowledgement.


Here's a sample transcript:
(my comments are in [[...]])

  lftp :~> debug 3
  lftp :~> open -e "mirror -e -R -v  www/lftp_test www/lftp_test" -u username,passwd
ftp.mywebsite.net
  [410389] ftp.mywebsite.net ---- Connecting to ftp.mywebsite.net (10.0.0.01) port 21
  [410389] ftp.mywebsite.net <--- 220---------- Welcome to Pure-FTPd [TLS] ----------
  [410389] ftp.mywebsite.net <--- 220-You are user number 6 of 50 allowed.
  [410389] ftp.mywebsite.net <--- 230-This server supports FXP transfers
  [410389] ftp.mywebsite.net <--- 230 OK. Current restricted directory is /
  [410389] ftp.mywebsite.net <--- 250 OK. Current directory is /www/lftp_test
  Transferring file `index.html'
      [[following message repeated with steadily decreasing values of b/s]]
  `index.html' at 4256 (100%) xxkb/s eta:0s [Waiting for transfer to complete]
      [[later overwritten by the following message]]
  `index.html' at 4256 (100%) eta:0s [Waiting for transfer to complete]
      [[this message stays here indefinitely]]
      [[hit Ctrl-C\]]
  Interrupt
  lftp [EMAIL PROTECTED]:


A compare of the TCP snoop between a good transfer (under windows-2000)
and a failed transfer (under windows-ME) shows that the client fails
to close the data port after the file is transferred.  Here is a
summary of a good session:

 ...
 client.data  -->  (final segment of file)   --> SERVER.data
 client.data <==   (Ack previous segment)   <==  SERVER.data
 client.data <==   (Ack final segment)      <==  SERVER.data
 client.data  -->  (Fin)                     --> SERVER.data
 client.data <==   (Ack, Fin)               <==  SERVER.data
 client.data  -->  (Ack)                     --> SERVER.data
 client.ftp  <==   ("226-success")          <==  SERVER.ftp
 ...

Now, in the case of windows-ME, the client never closes
the data port.  Therefore, the server never sends 226:

 ...
 client.data  -->  (final segment of file)      --> SERVER.data
 client.data <==   (Ack previous segment)      <==  SERVER.data
 client.data <==   (Ack final segment)         <==  SERVER.data

[[ now everything hangs while the server waits for client
   to close (Fin) the data port ]]


Again, windows ftp, cygwin ftp and ncftp all work correctly.
If anyone has any ideas what to tweak or how to diagnose this
in more detail (I've used gdb/strace, but I have not studied
the lftp source code enough yet to know where to begin looking)
I would certainly appreciate the help.

Thank you and Best Regards,

  Jeff Buckles
  Aloha, OR



Reply via email to