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
Avoid a crash with --append-verify when discarding the received data.
[rsync/rsync.git]
/
receiver.c
diff --git
a/receiver.c
b/receiver.c
index
e8fa3d1
..
d5a338c
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;
@@
-172,7
+173,7
@@
int open_tmpfile(char *fnametmp, const char *fname, struct file_struct *file)
* access to ensure that there is no race condition. They will be
* correctly updated after the right owner and group info is set.
* (Thanks to snabb@epipe.fi for pointing this out.) */
* access to ensure that there is no race condition. They will be
* correctly updated after the right owner and group info is set.
* (Thanks to snabb@epipe.fi for pointing this out.) */
- fd = do_mkstemp(fnametmp,
file->mode & INITACCESSPERMS
);
+ fd = do_mkstemp(fnametmp,
(file->mode & INITACCESSPERMS) | S_IWUSR
);
#if 0
/* In most cases parent directories will already exist because their
#if 0
/* In most cases parent directories will already exist because their
@@
-227,7
+228,7
@@
static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
sum.flength = (OFF_T)sum.count * sum.blength;
if (sum.remainder)
sum.flength -= sum.blength - sum.remainder;
sum.flength = (OFF_T)sum.count * sum.blength;
if (sum.remainder)
sum.flength -= sum.blength - sum.remainder;
- if (append_mode == 2) {
+ if (append_mode == 2
&& mapbuf
) {
for (j = CHUNK_SIZE; j < sum.flength; j += CHUNK_SIZE) {
if (INFO_GTE(PROGRESS, 1))
show_progress(offset, total_size);
for (j = CHUNK_SIZE; j < sum.flength; j += CHUNK_SIZE) {
if (INFO_GTE(PROGRESS, 1))
show_progress(offset, total_size);
@@
-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",