extern int ignore_errors;
extern int preserve_xattrs;
extern int kluge_around_eof;
-extern int daemon_over_rsh;
extern int munge_symlinks;
extern int open_noatime;
extern int sanitize_paths;
fclose(f);
}
- /* set daemon_over_rsh to false since we need to build the
- * true set of args passed through the rsh/ssh connection;
- * this is a no-op for direct-socket-connection mode */
- daemon_over_rsh = 0;
server_options(sargs, &sargc);
if (sargc >= MAX_ARGS - 2)
extern int compat_flags;
extern int protect_args;
extern int checksum_seed;
+extern int daemon_connection;
extern int protocol_version;
extern int remove_source_files;
extern int preserve_hard_links;
{
char buf[1024];
- if (!iobuf.in.buf || !iobuf.out.buf || iobuf.in_fd < 0 || iobuf.out_fd < 0 || kluge_around_eof || msgs2stderr)
+ if (!iobuf.in.buf || !iobuf.out.buf || iobuf.in_fd < 0 || iobuf.out_fd < 0 || kluge_around_eof)
+ return;
+
+ /* If we're talking to a daemon over a socket, don't short-circuit this logic */
+ if (msgs2stderr && daemon_connection >= 0)
return;
kluge_around_eof = 2;
int am_receiver = 0; /* Only set to 1 after the receiver/generator fork. */
int am_generator = 0; /* Only set to 1 after the receiver/generator fork. */
int local_server = 0;
-int daemon_over_rsh = 0;
+int daemon_connection = 0; /* 0 = no daemon, 1 = daemon via remote shell, -1 = daemon via socket */
mode_t orig_umask = 0;
int batch_gen_fd = -1;
int sender_keeps_checksum = 0;
#ifdef HAVE_REMSH
/* remsh (on HPUX) takes the arguments the other way around */
args[argc++] = machine;
- if (user && !(daemon_over_rsh && dash_l_set)) {
+ if (user && !(daemon_connection && dash_l_set)) {
args[argc++] = "-l";
args[argc++] = user;
}
#else
- if (user && !(daemon_over_rsh && dash_l_set)) {
+ if (user && !(daemon_connection && dash_l_set)) {
args[argc++] = "-l";
args[argc++] = user;
}
if (blocking_io < 0 && (strcmp(t, "rsh") == 0 || strcmp(t, "remsh") == 0))
blocking_io = 1;
- server_options(args, &argc);
+ if (daemon_connection > 0) {
+ args[argc++] = "--server";
+ args[argc++] = "--daemon";
+ } else
+ server_options(args, &argc);
if (argc >= MAX_ARGS - 2)
goto arg_overflow;
args[argc++] = ".";
- if (!daemon_over_rsh) {
+ if (!daemon_connection) {
while (remote_argc > 0) {
if (argc >= MAX_ARGS - 1) {
arg_overflow:
#ifdef ICONV_CONST
setup_iconv();
#endif
- if (protect_args && !daemon_over_rsh)
+ if (protect_args && !daemon_connection)
send_protected_args(*f_out_p, args);
}
}
am_sender = 0;
if (rsync_port)
- daemon_over_rsh = shell_cmd ? 1 : -1;
+ daemon_connection = shell_cmd ? 1 : -1;
} else { /* source is local, check dest arg */
am_sender = 1;
} else { /* hostspec was found, so dest is remote */
argv[argc] = path;
if (rsync_port)
- daemon_over_rsh = shell_cmd ? 1 : -1;
+ daemon_connection = shell_cmd ? 1 : -1;
}
}
} else { /* read_batch */
else
env_port = rsync_port;
- if (daemon_over_rsh < 0)
+ if (daemon_connection < 0)
return start_socket_client(shell_machine, remote_argc, remote_argv, argc, argv);
- if (password_file && !daemon_over_rsh) {
+ if (password_file && !daemon_connection) {
rprintf(FERROR, "The --password-file option may only be "
"used when accessing an rsync daemon.\n");
exit_cleanup(RERR_SYNTAX);
}
#ifdef HAVE_PUTENV
- if (daemon_over_rsh)
+ if (daemon_connection)
set_env_num("RSYNC_PORT", env_port);
#endif
/* if we're running an rsync server on the remote host over a
* remote shell command, we need to do the RSYNCD protocol first */
- if (daemon_over_rsh) {
+ if (daemon_connection) {
int tmpret;
tmpret = start_inband_exchange(f_in, f_out, shell_user, remote_argc, remote_argv);
if (tmpret < 0)
extern int module_id;
extern int local_server;
extern int sanitize_paths;
-extern int daemon_over_rsh;
extern unsigned int module_dirlen;
extern struct name_num_obj valid_checksums;
extern struct name_num_obj valid_compressions;
/* This should always remain first on the server's command-line. */
args[ac++] = "--server";
- if (daemon_over_rsh > 0) {
- args[ac++] = "--daemon";
- *argc_p = ac;
- /* if we're passing --daemon, we're done */
- return;
- }
-
if (!am_sender)
args[ac++] = "--sender";