The branch, master has been updated
       via  70cbc66b Set RSYNC_PORT in the env for a daemon-over-rsh 
connection. Fixes bug #14163.
      from  b63276e7 A quick fix for some perl patch-helper scripts.

https://git.samba.org/?p=rsync.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 70cbc66b7f504f9ba5f396aeafa38aa8d483b799
Author: Wayne Davison <way...@samba.org>
Date:   Sun Apr 5 19:32:40 2020 -0700

    Set RSYNC_PORT in the env for a daemon-over-rsh connection.
    Fixes bug #14163.

-----------------------------------------------------------------------

Summary of changes:
 clientserver.c |  2 +-
 main.c         | 14 +++++++++++++-
 options.c      |  2 +-
 rsync.yo       |  9 +++++++++
 4 files changed, 24 insertions(+), 3 deletions(-)


Changeset truncated at 500 lines:

diff --git a/clientserver.c b/clientserver.c
index 2f8f2f25..692a4047 100644
--- a/clientserver.c
+++ b/clientserver.c
@@ -487,7 +487,7 @@ static void set_env_str(const char *var, const char *str)
 }
 
 #ifdef HAVE_PUTENV
-static void set_env_num(const char *var, long num)
+void set_env_num(const char *var, long num)
 {
        char *mem;
        if (asprintf(&mem, "%s=%ld", var, num) < 0)
diff --git a/main.c b/main.c
index b594ab82..1328c504 100644
--- a/main.c
+++ b/main.c
@@ -1359,7 +1359,7 @@ static int start_client(int argc, char *argv[])
 {
        char *p, *shell_machine = NULL, *shell_user = NULL;
        char **remote_argv;
-       int remote_argc;
+       int remote_argc, env_port = rsync_port;
        int f_in, f_out;
        int ret;
        pid_t pid;
@@ -1425,6 +1425,7 @@ static int start_client(int argc, char *argv[])
                                        exit_cleanup(RERR_SYNTAX);
                                }
                                shell_machine = NULL;
+                               rsync_port = 0;
                        } else { /* hostspec was found, so dest is remote */
                                argv[argc] = path;
                                if (rsync_port)
@@ -1439,6 +1440,7 @@ static int start_client(int argc, char *argv[])
                }
                remote_argv = argv += argc - 1;
                remote_argc = argc = 1;
+               rsync_port = 0;
        }
 
        if (!rsync_port && remote_argc && !**remote_argv) /* Turn an empty arg 
into a dot dir. */
@@ -1485,6 +1487,11 @@ static int start_client(int argc, char *argv[])
                }
        }
 
+       if (rsync_port < 0)
+               rsync_port = RSYNC_PORT;
+       else
+               env_port = rsync_port;
+
        if (daemon_over_rsh < 0)
                return start_socket_client(shell_machine, remote_argc, 
remote_argv, argc, argv);
 
@@ -1515,6 +1522,11 @@ static int start_client(int argc, char *argv[])
                        NS(remote_argv[0]));
        }
 
+#ifdef HAVE_PUTENV
+       if (daemon_over_rsh)
+               set_env_num("RSYNC_PORT", env_port);
+#endif
+
        pid = do_cmd(shell_cmd, shell_machine, shell_user, remote_argv, 
remote_argc,
                     &f_in, &f_out);
 
diff --git a/options.c b/options.c
index 96e5ffba..2db357e2 100644
--- a/options.c
+++ b/options.c
@@ -2926,7 +2926,7 @@ char *check_for_hostspec(char *s, char **host_ptr, int 
*port_ptr)
                *host_ptr = parse_hostspec(s + strlen(URL_PREFIX), &path, 
port_ptr);
                if (*host_ptr) {
                        if (!*port_ptr)
-                               *port_ptr = RSYNC_PORT;
+                               *port_ptr = -1; /* -1 indicates they want the 
default */
                        return path;
                }
        }
diff --git a/rsync.yo b/rsync.yo
index 71378614..bcb33a79 100644
--- a/rsync.yo
+++ b/rsync.yo
@@ -1594,6 +1594,15 @@ shell connection, rather than through a direct socket 
connection to a
 running rsync daemon on the remote host.  See the section "USING
 RSYNC-DAEMON FEATURES VIA A REMOTE-SHELL CONNECTION" above.
 
+Beginning with rsync 3.1.4, the RSYNC_PORT environment variable will be
+set when a daemon connection is being made via a remote-shell
+connection.  It is set to 0 if the default daemon port is being assumed,
+or it is set to the value of the rsync port that was specified via
+either the bf(--port) option or a non-empty port value in an rsync://
+URL.  This allows the script to discern if a non-default port is being
+requested, allowing for things such as an SSL or stunnel helper script
+to connect to a default or alternate port.
+
 Command-line arguments are permitted in COMMAND provided that COMMAND is
 presented to rsync as a single argument.  You must use spaces (not tabs
 or other whitespace) to separate the command and args from each other,


-- 
The rsync repository.

_______________________________________________
rsync-cvs mailing list
rsync-cvs@lists.samba.org
https://lists.samba.org/mailman/listinfo/rsync-cvs

Reply via email to