On 15 Sep 2000, Dave Dykstra <[EMAIL PROTECTED]> wrote:

> An important point you have missed: the -e option is ignored when
> you're connecting to an rsync daemon (that is, either "rsync://" or
> "::" syntax).  Ssh cannot be used in combination with it.  Rsync
> really ought to be changed to report that combination as an error
> instead of silently ignoring the -e.
> 

That sounds like a good idea.  How about this?

diff -c -r1.60 clientserver.c
*** clientserver.c      2000/10/26 07:24:18     1.60
--- clientserver.c      2000/10/31 00:58:57
***************
*** 17,23 ****
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
  
! /* the socket based protocol for setting up a connection wit rsyncd */
  
  #include "rsync.h"
  
--- 17,23 ----
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
  
! /* the socket based protocol for setting up a connection with rsyncd */
  
  #include "rsync.h"
  
***************
*** 28,33 ****
--- 28,38 ----
  char *auth_user;
  int sanitize_paths = 0;
  
+ 
+ /*
+  * Run a client connected to an rsyncd.  The alternative to this
+  * function for remote-shell connections is do_cmd.
+  */
  int start_socket_client(char *host, char *path, int argc, char *argv[])
  {
        int fd, i;
***************
*** 38,49 ****
--- 43,67 ----
        extern int remote_version;
        extern int am_sender;
        extern struct in_addr socket_address;
+       extern char *shell_cmd;
  
        if (argc == 0 && !am_sender) {
                extern int list_only;
                list_only = 1;
        }
  
+         /* This is just a friendliness enhancement: if the connection
+          * is to an rsyncd then there is no point specifying the -e option.
+          * Note that this is only set if the -e was explicitly specified,
+          * not if the environment variable just happens to be set.
+          * See http://lists.samba.org/pipermail/rsync/2000-September/002744.html
+          */
+         if (shell_cmd) {
+                 rprintf(FERROR, "WARNING: --rsh option ignored when "
+                         "connecting to rsync daemon\n");
+                 /* continue */
+         }
+         
        if (*path == '/') {
                rprintf(FERROR,"ERROR: The remote path must start with a module 
name\n");
                return -1;


PGP signature

Reply via email to