Attached is a little diff that fixes the problem, it boils down to this:

    if (!opt_STAT) {
      // don't change session flags: session.sf_flags |= SF_ASCII_OVERRIDE;
      // because if pr_data_open fails, we don't clean up after ourselves and 
cause
      // side effects to appear
      if (pr_data_open(NULL, "file list", PR_NETIO_IO_WR, 0) < 0)
        return -1;
      session.sf_flags |= SF_ASCII_OVERRIDE;// instead, change session flags 
AFTER pr_data_open
    }

-- 
Dariush Pietrzak,
Key fingerprint = 40D0 9FFB 9939 7320 8294  05E0 BCC7 02C4 75CC 50D9
--- mod_ls.c.orig       2009-04-16 21:52:12.000000000 +0200
+++ mod_ls.c    2009-04-16 21:52:47.000000000 +0200
@@ -1408,9 +1408,9 @@

     /* Open data connection */
     if (!opt_STAT) {
-      session.sf_flags |= SF_ASCII_OVERRIDE;
       if (pr_data_open(NULL, "file list", PR_NETIO_IO_WR, 0) < 0)
         return -1;
+      session.sf_flags |= SF_ASCII_OVERRIDE;
     }

     /* If there are no globbing characters in the given target,
@@ -1587,9 +1587,9 @@

     /* Open data connection */
     if (!opt_STAT) {
-      session.sf_flags |= SF_ASCII_OVERRIDE;
       if (pr_data_open(NULL, "file list", PR_NETIO_IO_WR, 0) < 0)
         return -1;
+      session.sf_flags |= SF_ASCII_OVERRIDE;
     }

     if (ls_perms_full(cmd->tmp_pool, cmd, ".", NULL)) {

Reply via email to