Commit e208631a authored by Wayne Davison's avatar Wayne Davison

Improved the arg-checking of a daemon command.

parent b553a3dd
...@@ -37,7 +37,6 @@ extern int am_daemon; ...@@ -37,7 +37,6 @@ extern int am_daemon;
extern int inc_recurse; extern int inc_recurse;
extern int blocking_io; extern int blocking_io;
extern int remove_source_files; extern int remove_source_files;
extern int daemon_over_rsh;
extern int need_messages_from_generator; extern int need_messages_from_generator;
extern int kluge_around_eof; extern int kluge_around_eof;
extern int do_stats; extern int do_stats;
...@@ -75,6 +74,7 @@ extern struct filter_list_struct server_filter_list; ...@@ -75,6 +74,7 @@ extern struct filter_list_struct server_filter_list;
int local_server = 0; int local_server = 0;
int new_root_dir = 0; int new_root_dir = 0;
int daemon_over_rsh = 0;
mode_t orig_umask = 0; mode_t orig_umask = 0;
int batch_gen_fd = -1; int batch_gen_fd = -1;
...@@ -1092,16 +1092,9 @@ static int start_client(int argc, char *argv[]) ...@@ -1092,16 +1092,9 @@ static int start_client(int argc, char *argv[])
"--files-from hostname is not the same as the transfer hostname\n"); "--files-from hostname is not the same as the transfer hostname\n");
exit_cleanup(RERR_SYNTAX); exit_cleanup(RERR_SYNTAX);
} }
if (rsync_port) {
if (!shell_cmd) {
return start_socket_client(shell_machine,
shell_path,
argc, argv);
}
daemon_over_rsh = 1;
}
am_sender = 0; am_sender = 0;
if (rsync_port)
daemon_over_rsh = shell_cmd ? 1 : -1;
} else { /* source is local, check dest arg */ } else { /* source is local, check dest arg */
am_sender = 1; am_sender = 1;
...@@ -1128,14 +1121,8 @@ static int start_client(int argc, char *argv[]) ...@@ -1128,14 +1121,8 @@ static int start_client(int argc, char *argv[])
} }
shell_machine = NULL; shell_machine = NULL;
shell_path = p; shell_path = p;
} else if (rsync_port) { } else if (rsync_port)
if (!shell_cmd) { daemon_over_rsh = shell_cmd ? 1 : -1;
return start_socket_client(shell_machine,
shell_path,
argc, argv);
}
daemon_over_rsh = 1;
}
} }
} else { /* read_batch */ } else { /* read_batch */
local_server = 1; local_server = 1;
...@@ -1146,6 +1133,15 @@ static int start_client(int argc, char *argv[]) ...@@ -1146,6 +1133,15 @@ static int start_client(int argc, char *argv[])
} }
} }
/* for remote source, only single dest arg can remain ... */
if (!am_sender && argc > 1) {
usage(FERROR);
exit_cleanup(RERR_SYNTAX);
}
if (daemon_over_rsh < 0)
return start_socket_client(shell_machine, shell_path, argc, argv);
if (password_file && !daemon_over_rsh) { if (password_file && !daemon_over_rsh) {
rprintf(FERROR, "The --password-file option may only be " rprintf(FERROR, "The --password-file option may only be "
"used when accessing an rsync daemon.\n"); "used when accessing an rsync daemon.\n");
...@@ -1169,12 +1165,6 @@ static int start_client(int argc, char *argv[]) ...@@ -1169,12 +1165,6 @@ static int start_client(int argc, char *argv[])
shell_path ? shell_path : ""); shell_path ? shell_path : "");
} }
/* for remote source, only single dest arg can remain ... */
if (!am_sender && argc > 1) {
usage(FERROR);
exit_cleanup(RERR_SYNTAX);
}
/* ... or no dest at all */ /* ... or no dest at all */
if (!am_sender && argc == 0) if (!am_sender && argc == 0)
list_only |= 1; list_only |= 1;
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
extern int module_id; extern int module_id;
extern int sanitize_paths; extern int sanitize_paths;
extern int daemon_over_rsh;
extern struct filter_list_struct filter_list; extern struct filter_list_struct filter_list;
extern struct filter_list_struct server_filter_list; extern struct filter_list_struct server_filter_list;
...@@ -95,7 +96,6 @@ int recurse = 0; ...@@ -95,7 +96,6 @@ int recurse = 0;
int allow_inc_recurse = 1; int allow_inc_recurse = 1;
int xfer_dirs = -1; int xfer_dirs = -1;
int am_daemon = 0; int am_daemon = 0;
int daemon_over_rsh = 0;
int do_stats = 0; int do_stats = 0;
int do_progress = 0; int do_progress = 0;
int keep_partial = 0; int keep_partial = 0;
...@@ -1616,7 +1616,7 @@ void server_options(char **args,int *argc) ...@@ -1616,7 +1616,7 @@ void server_options(char **args,int *argc)
/* This should always remain first on the server's command-line. */ /* This should always remain first on the server's command-line. */
args[ac++] = "--server"; args[ac++] = "--server";
if (daemon_over_rsh) { if (daemon_over_rsh > 0) {
args[ac++] = "--daemon"; args[ac++] = "--daemon";
*argc = ac; *argc = ac;
/* if we're passing --daemon, we're done */ /* if we're passing --daemon, we're done */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment