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