X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/c0422cea9faa173bcd5ac4d86a456ae71bdda6c4..ad54dcc827451383222d1cf12d33038ba7f49447:/clientserver.c diff --git a/clientserver.c b/clientserver.c index ac99ae4e..bf5a1334 100644 --- a/clientserver.c +++ b/clientserver.c @@ -43,6 +43,7 @@ extern int filesfrom_fd; extern int remote_protocol; extern int protocol_version; extern int io_timeout; +extern int select_timeout; extern int orig_umask; extern int no_detach; extern int default_af_hint; @@ -50,6 +51,7 @@ extern char *bind_address; extern struct exclude_list_struct server_exclude_list; extern char *exclude_path_prefix; extern char *config_file; +extern char *files_from; char *auth_user; @@ -87,6 +89,9 @@ int start_socket_client(char *host, char *path, int argc, char *argv[]) *p = '\0'; } + if (rsync_port == 0) + rsync_port = RSYNC_PORT; + fd = open_socket_out_wrapped(host, rsync_port, bind_address, default_af_hint); if (fd == -1) @@ -461,6 +466,8 @@ static int rsync_module(int f_in, int f_out, int i) * get the error back to the client. This means getting * the protocol setup finished first in later versions. */ setup_protocol(f_out, f_in); + if (files_from && !am_sender && strcmp(files_from, "-") != 0) + write_byte(f_out, 0); io_start_multiplex_out(); } @@ -470,8 +477,11 @@ static int rsync_module(int f_in, int f_out, int i) exit_cleanup(RERR_UNSUPPORTED); } - if (lp_timeout(i)) + if (lp_timeout(i)) { io_timeout = lp_timeout(i); + if (io_timeout && io_timeout < select_timeout) + select_timeout = io_timeout; + } start_server(f_in, f_out, argc, argp); @@ -595,6 +605,11 @@ int daemon_main(void) if (!lp_load(config_file, 1)) exit_cleanup(RERR_SYNTAX); + if (rsync_port == 0 && (rsync_port = lp_rsync_port()) == 0) + rsync_port = RSYNC_PORT; + if (bind_address == NULL) + bind_address = lp_bind_address(); + log_init(); rprintf(FLOG, "rsyncd version %s starting, listening on port %d\n",