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)) {