X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/141c62659eb64ba27eda7e9f79e45df9594526c5..e912bd4dfbd9cfa83f7b76209b3fcb34f59b92f9:/clientserver.c diff --git a/clientserver.c b/clientserver.c index f3adfe97..4b4a08f9 100644 --- a/clientserver.c +++ b/clientserver.c @@ -45,6 +45,7 @@ extern int orig_umask; extern int no_detach; extern int default_af_hint; extern char *bind_address; +extern char *sockopts; extern struct filter_list_struct server_filter_list; extern char *config_file; extern char *files_from; @@ -98,6 +99,8 @@ int start_socket_client(char *host, char *path, int argc, char *argv[]) if (fd == -1) exit_cleanup(RERR_SOCKETIO); + set_socket_options(fd, sockopts); + ret = start_inband_exchange(user, path, fd, fd, argc); return ret ? ret : client_run(fd, fd, -1, argc, argv); @@ -297,7 +300,7 @@ static int rsync_module(int f_in, int f_out, int i) if (!claim_connection(lp_lock_file(i), lp_max_connections(i))) { if (errno) { rsyserr(FLOG, errno, "failed to open lock file %s", - safe_fname(lp_lock_file(i))); + lp_lock_file(i)); io_printf(f_out, "@ERROR: failed to open lock file\n"); } else { rprintf(FLOG, "max connections (%d) reached\n", @@ -494,14 +497,14 @@ static int rsync_module(int f_in, int f_out, int i) */ if (chroot(lp_path(i))) { rsyserr(FLOG, errno, "chroot %s failed", - safe_fname(lp_path(i))); + lp_path(i)); io_printf(f_out, "@ERROR: chroot failed\n"); return -1; } if (!push_dir("/")) { rsyserr(FLOG, errno, "chdir %s failed\n", - safe_fname(lp_path(i))); + lp_path(i)); io_printf(f_out, "@ERROR: chdir failed\n"); return -1; } @@ -509,7 +512,7 @@ static int rsync_module(int f_in, int f_out, int i) } else { if (!push_dir(lp_path(i))) { rsyserr(FLOG, errno, "chdir %s failed\n", - safe_fname(lp_path(i))); + lp_path(i)); io_printf(f_out, "@ERROR: chdir failed\n"); return -1; } @@ -718,7 +721,10 @@ int start_daemon(int f_in, int f_out) if (!am_server) { set_socket_options(f_in, "SO_KEEPALIVE"); - set_socket_options(f_in, lp_socket_options()); + if (sockopts) + set_socket_options(f_in, sockopts); + else + set_socket_options(f_in, lp_socket_options()); set_nonblocking(f_in); } @@ -822,7 +828,7 @@ int daemon_main(void) 0666 & ~orig_umask)) == -1) { cleanup_set_pid(0); rsyserr(FLOG, errno, "failed to create pid file %s", - safe_fname(pid_file)); + pid_file); exit_cleanup(RERR_FILEIO); } snprintf(pidbuf, sizeof pidbuf, "%ld\n", (long)pid);