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