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
Fix erroneous "--fake-user" in the rsyncd.conf(5) man page.
[rsync/rsync.git]
/
receiver.c
diff --git
a/receiver.c
b/receiver.c
index
965bb39
..
6688dda
100644
(file)
--- a/
receiver.c
+++ b/
receiver.c
@@
-48,6
+48,7
@@
extern int keep_partial;
extern int checksum_len;
extern int checksum_seed;
extern int inplace;
extern int checksum_len;
extern int checksum_seed;
extern int inplace;
+extern int allowed_lull;
extern int delay_updates;
extern mode_t orig_umask;
extern struct stats stats;
extern int delay_updates;
extern mode_t orig_umask;
extern struct stats stats;
@@
-254,6
+255,9
@@
static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
if (INFO_GTE(PROGRESS, 1))
show_progress(offset, total_size);
if (INFO_GTE(PROGRESS, 1))
show_progress(offset, total_size);
+ if (allowed_lull)
+ maybe_send_keepalive(time(NULL), MSK_ALLOW_FLUSH | MSK_ACTIVE_RECEIVER);
+
if (i > 0) {
if (DEBUG_GTE(DELTASUM, 3)) {
rprintf(FINFO,"data recv %d at %s\n",
if (i > 0) {
if (DEBUG_GTE(DELTASUM, 3)) {
rprintf(FINFO,"data recv %d at %s\n",
@@
-425,6
+429,9
@@
static int gen_wants_ndx(int desired_ndx, int flist_num)
if (got_eof)
return 0;
if (got_eof)
return 0;
+ /* TODO: integrate gen-reading I/O into perform_io() so this is not needed? */
+ io_flush(FULL_FLUSH);
+
while (next_ndx < desired_ndx) {
if (inc_recurse && flist_num <= done_cnt)
return 0;
while (next_ndx < desired_ndx) {
if (inc_recurse && flist_num <= done_cnt)
return 0;
@@
-452,7
+459,7
@@
static int gen_wants_ndx(int desired_ndx, int flist_num)
* main routine for receiver process.
*
* Receiver process runs on the same host as the generator process. */
* main routine for receiver process.
*
* Receiver process runs on the same host as the generator process. */
-int recv_files(int f_in, char *local_name)
+int recv_files(int f_in,
int f_out,
char *local_name)
{
int fd1,fd2;
STRUCT_STAT st;
{
int fd1,fd2;
STRUCT_STAT st;
@@
-464,7
+471,6
@@
int recv_files(int f_in, char *local_name)
char fnamecmpbuf[MAXPATHLEN];
uchar fnamecmp_type;
struct file_struct *file;
char fnamecmpbuf[MAXPATHLEN];
uchar fnamecmp_type;
struct file_struct *file;
- struct stats initial_stats;
int itemizing = am_server ? logfile_format_has_i : stdout_format_has_i;
enum logcode log_code = log_before_transfer ? FLOG : FINFO;
int max_phase = protocol_version >= 29 ? 2 : 1;
int itemizing = am_server ? logfile_format_has_i : stdout_format_has_i;
enum logcode log_code = log_before_transfer ? FLOG : FINFO;
int max_phase = protocol_version >= 29 ? 2 : 1;
@@
-484,7
+490,7
@@
int recv_files(int f_in, char *local_name)
cleanup_disable();
/* This call also sets cur_flist. */
cleanup_disable();
/* This call also sets cur_flist. */
- ndx = read_ndx_and_attrs(f_in, &iflags, &fnamecmp_type,
+ ndx = read_ndx_and_attrs(f_in,
f_out,
&iflags, &fnamecmp_type,
xname, &xlen);
if (ndx == NDX_DONE) {
if (!am_server && INFO_GTE(PROGRESS, 2) && cur_flist) {
xname, &xlen);
if (ndx == NDX_DONE) {
if (!am_server && INFO_GTE(PROGRESS, 2) && cur_flist) {
@@
-509,7
+515,7
@@
int recv_files(int f_in, char *local_name)
rprintf(FINFO, "recv_files phase=%d\n", phase);
if (phase == 2 && delay_updates)
handle_delayed_updates(local_name);
rprintf(FINFO, "recv_files phase=%d\n", phase);
if (phase == 2 && delay_updates)
handle_delayed_updates(local_name);
-
send_msg(MSG_DONE, "", 0, 0
);
+
write_int(f_out, NDX_DONE
);
continue;
}
continue;
}
@@
-609,14
+615,17
@@
int recv_files(int f_in, char *local_name)
}
}
}
}
+ if (!log_before_transfer)
+ remember_initial_stats();
+
if (!do_xfers) { /* log the transfer */
if (!do_xfers) { /* log the transfer */
- log_item(FCLIENT, file,
&stats,
iflags, NULL);
+ log_item(FCLIENT, file, iflags, NULL);
if (read_batch)
discard_receive_data(f_in, F_LENGTH(file));
continue;
}
if (write_batch < 0) {
if (read_batch)
discard_receive_data(f_in, F_LENGTH(file));
continue;
}
if (write_batch < 0) {
- log_item(FCLIENT, file,
&stats,
iflags, NULL);
+ log_item(FCLIENT, file, iflags, NULL);
if (!am_server)
discard_receive_data(f_in, F_LENGTH(file));
continue;
if (!am_server)
discard_receive_data(f_in, F_LENGTH(file));
continue;
@@
-674,8
+683,6
@@
int recv_files(int f_in, char *local_name)
fnamecmp = fname;
}
fnamecmp = fname;
}
- initial_stats = stats;
-
/* open the file */
fd1 = do_open(fnamecmp, O_RDONLY, 0);
/* open the file */
fd1 = do_open(fnamecmp, O_RDONLY, 0);
@@
-770,7
+777,7
@@
int recv_files(int f_in, char *local_name)
/* log the transfer */
if (log_before_transfer)
/* log the transfer */
if (log_before_transfer)
- log_item(FCLIENT, file,
&initial_stats,
iflags, NULL);
+ log_item(FCLIENT, file, iflags, NULL);
else if (!am_server && INFO_GTE(NAME, 1) && INFO_EQ(PROGRESS, 1))
rprintf(FINFO, "%s\n", fname);
else if (!am_server && INFO_GTE(NAME, 1) && INFO_EQ(PROGRESS, 1))
rprintf(FINFO, "%s\n", fname);
@@
-778,7
+785,7
@@
int recv_files(int f_in, char *local_name)
recv_ok = receive_data(f_in, fnamecmp, fd1, st.st_size,
fname, fd2, F_LENGTH(file));
recv_ok = receive_data(f_in, fnamecmp, fd1, st.st_size,
fname, fd2, F_LENGTH(file));
- log_item(log_code, file,
&initial_stats,
iflags, NULL);
+ log_item(log_code, file, iflags, NULL);
if (fd1 != -1)
close(fd1);
if (fd1 != -1)
close(fd1);