--- curl-7.17.1-20070925\lib\ftp.c  2007-09-25 04:00:02.000000000 +0200
+++ curl\lib\ftp.c	2007-09-26 16:24:48.010087800 +0200
@@ -742,10 +742,12 @@
     result = ftp_state_post_cwd(conn);
   else {
     ftpc->count2 = 0;
-    if (conn->bits.reuse && ftpc->entrypath) {
-      /* This is a re-used connection. Since we change directory to where the
-         transfer is taking place, we must first get back to the original dir
-         where we ended up after login: */
+    if ( conn->bits.reuse && ftpc->entrypath  && 
+         ftpc->dirs[0]    && ftpc->dirs[0][0] != '/'){
+      /* This is a re-used connection. If the new path is not 
+         absolute (start with /), we change directory to where 
+         the transfer is taking place, so we must first get back 
+         to the original dir where we ended up after login: */
       ftpc->count1 = 0; /* we count this as the first path, then we add one
                           for all upcoming ones in the ftp->dirs[] array */
       NBFTPSENDF(conn, "CWD %s", ftpc->entrypath);
