My version of Matt's improvements related to missing source args:
[rsync/rsync.git] / main.c
diff --git a/main.c b/main.c
index 6881c8e..0774f1f 100644 (file)
--- a/main.c
+++ b/main.c
@@ -4,7 +4,7 @@
  * Copyright (C) 1996-2001 Andrew Tridgell <tridge@samba.org>
  * Copyright (C) 1996 Paul Mackerras
  * Copyright (C) 2001, 2002 Martin Pool <mbp@samba.org>
- * Copyright (C) 2003-2008 Wayne Davison
+ * Copyright (C) 2003-2009 Wayne Davison
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -469,7 +469,7 @@ static pid_t do_cmd(char *cmd, char *machine, char *user, char **remote_argv, in
 #ifdef ICONV_CONST
                setup_iconv();
 #endif
-               if (protect_args)
+               if (protect_args && !daemon_over_rsh)
                        send_protected_args(*f_out_p, args);
        }
 
@@ -1016,7 +1016,6 @@ int client_run(int f_in, int f_out, pid_t pid, int argc, char *argv[])
                if (write_batch && !am_server)
                        start_write_batch(f_out);
                flist = send_file_list(f_out, argc, argv);
-               set_msg_fd_in(-1);
                if (verbose > 3)
                        rprintf(FINFO,"file list sent\n");
 
@@ -1187,8 +1186,8 @@ static int start_client(int argc, char *argv[])
                        rprintf(FERROR, "remote destination is not allowed with --read-batch\n");
                        exit_cleanup(RERR_SYNTAX);
                }
-               remote_argv = argv + argc - 1;
-               remote_argc = 1;
+               remote_argv = argv += argc - 1;
+               remote_argc = argc = 1;
        }
 
        if (am_sender) {