Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Turn on blocking_io when starting client of rsync server daemon.
[rsync/rsync.git]
/
main.c
diff --git
a/main.c
b/main.c
index
2f422e2
..
32d47e6
100644
(file)
--- a/
main.c
+++ b/
main.c
@@
-112,6
+112,7
@@
static int do_cmd(char *cmd,char *machine,char *user,char *path,int *f_in,int *f
char *tok,*dir=NULL;
extern int local_server;
extern char *rsync_path;
char *tok,*dir=NULL;
extern int local_server;
extern char *rsync_path;
+ extern int blocking_io;
if (!local_server) {
if (!cmd)
if (!local_server) {
if (!cmd)
@@
-144,6
+145,9
@@
static int do_cmd(char *cmd,char *machine,char *user,char *path,int *f_in,int *f
args[argc++] = rsync_path;
server_options(args,&argc);
args[argc++] = rsync_path;
server_options(args,&argc);
+
+
+ if (strcmp(cmd, RSYNC_RSH) == 0) blocking_io = 1;
}
args[argc++] = ".";
}
args[argc++] = ".";
@@
-236,6
+240,7
@@
static void do_server_sender(int f_in, int f_out, int argc,char *argv[])
char *dir = argv[0];
extern int relative_paths;
extern int recurse;
char *dir = argv[0];
extern int relative_paths;
extern int recurse;
+ extern int remote_version;
if (verbose > 2)
rprintf(FINFO,"server_sender starting pid=%d\n",(int)getpid());
if (verbose > 2)
rprintf(FINFO,"server_sender starting pid=%d\n",(int)getpid());
@@
-267,7
+272,12
@@
static void do_server_sender(int f_in, int f_out, int argc,char *argv[])
}
send_files(flist,f_out,f_in);
}
send_files(flist,f_out,f_in);
+ io_flush();
report(f_out);
report(f_out);
+ if (remote_version >= 24) {
+ /* final goodbye message */
+ read_int(f_in);
+ }
io_flush();
exit_cleanup(0);
}
io_flush();
exit_cleanup(0);
}
@@
-319,6
+329,7
@@
static int do_recv(int f_in,int f_out,struct file_list *flist,char *local_name)
set_error_fd(error_pipe[1]);
recv_files(f_in,flist,local_name,recv_pipe[1]);
set_error_fd(error_pipe[1]);
recv_files(f_in,flist,local_name,recv_pipe[1]);
+ io_flush();
report(f_in);
write_int(recv_pipe[1],1);
report(f_in);
write_int(recv_pipe[1],1);
@@
-471,11
+482,11
@@
int client_run(int f_in, int f_out, int pid, int argc, char *argv[])
io_flush();
wait_process(pid, &status);
}
io_flush();
wait_process(pid, &status);
}
- report(-1);
if (remote_version >= 24) {
/* final goodbye message */
read_int(f_in);
}
if (remote_version >= 24) {
/* final goodbye message */
read_int(f_in);
}
+ report(-1);
exit_cleanup(status);
}
exit_cleanup(status);
}