cURL / Mailing Lists / curl-library / Single Mail

curl-library

RE: FTP Upload problems with Multi interface

From: Andreas Wurf <awurf_at_adobe.com>
Date: Fri, 14 Nov 2008 13:25:04 +0000

Hi Daniel,

> Within the ftp_done() function there's a call to Curl_GetFTPResponse(). That
> is supposed to wait for the response from the server. It would be interesting
> to learn if that call somehow isn't called or if it returns with some kind of
> "wrong" info or similar when this bug occurs.

It's hard to find something if you don't know what to look for ;-) So far, I could not observe anything special. The File size seems not to have great influence on the hang, though. But I found another strange thing, maybe this leads towards the problem.

Here's the WireShark dump of a hang channel while uploading with ftp-multi-upload.c to my private internet server (hosted by an ISP, I don't know which OS):

--------------------------------<snip>--------------------------------
220 1.2.3.4 FTP server ready
USER user
331 Password required for user.
PASS password
230 User user logged in.
PWD
257 "/" is current directory.
CWD FtpMultiUpload
250 CWD command successful
PASV
227 Entering Passive Mode (1,2,3,4,197,60).
TYPE I
200 Type set to I
STOR file01
150 Opening BINARY mode data connection for file01
CWD / // <-- channel hangs here!
--------------------------------</snip>-------------------------------

Here the hang occurs right after libcurl sending a "CWD /" and again the previous transfer's "226" response is absent. In the previous examples, the hang occurs after libcurl sending the PASV command.

But: Why does libcurl send the "CWD /" at all?

ftp-multi-upload.c uploads all files into the same directory (FtpMultiUpload in my server configuration). WireShark log files for successful Runs of ftp-multi-upload.c show no "CWD /" at all, on either channel! So, why does libcurl assume that it has to "CWD /" here?

Regards,
Andreas
Received on 2008-11-14