curl-library
ftp_perform problem
Date: Thu, 06 Mar 2003 17:48:59 -0800
Hi,
I'm using curl-7.10.4-pre3 with VC6 compiler on Win2K. I'm having
trouble executing a LIST command as a CUSTOMREQUEST.
Here's what is happening:
1. Establish a connection to a server with a url that looks like:
"user:password_at_myftpserver/"
Here are the server responses:
"220 myftpserver FTP server (Version wu-2.6.1-18) ready."
"331 Password required for user."
"230 User user logged in."
"257 "/home/mygroup/user_home" is current directory."
Note that the ftp server drops you into a directory other than '/', but
libcurl seems to record that information internally.
2. Execute a CWD commmand as a POSTQUOTE with a path that looks like:
"../otherdir/"
Here's the response from the server:
"250 CWD command successful."
3. Execute a PWD command as another POSTQUOTE. The server responds:
"257 "/home/mygroup/otherdir" is current directory.
4. Execute a CUSTOMREQUEST with the string:
"LIST /home/mygroup/otherdir/"
and the URL
"ftp://myftpserver/home/mygroup/otherdir/"
Here are the server responses:
"250 CWD command successful."
"550 home/mygroup/otherdir: No such file or directory."
Tracing into ftp.c function ftp_perform() I found this code:
/* This is a re-used connection. Since we change directory to where the
transfer is taking place, we must now get back to the original dir
where we ended up after login: */
if (conn->bits.reuse && ftp->entrypath) {
if ((result = ftp_cwd(conn, ftp->entrypath)) != CURLE_OK)
return result;
}
/* change directory first! */
if(ftp->dir && ftp->dir[0]) {
if ((result = ftp_cwd(conn, ftp->dir)) != CURLE_OK)
return result;
}
The first ftp_cwd() succeeds and the working directory changes to
/home/mygroup/user_home
but the second ftp_cwd() fails. Libcurl appears to drop the first '/'
character of the path passed to ftp_cwd(), so the path seems to be
interpreted as being relative to ftp->entrypath instead of relative to '/'.
Is this a known bug, or is there a way to tell libcurl to retain the
first '/' in the path for the second ftp_cwd?
Dave Halbakken
-------------------------------------------------------
This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger
for complex code. Debugging C/C++ programs can leave you feeling lost and
disoriented. TotalView can help you find your way. Available on major UNIX
and Linux platforms. Try it free. www.etnus.com
Received on 2003-03-07