From: Wayne Davison Date: Mon, 11 Nov 2013 00:15:30 +0000 (-0800) Subject: Avoid useless keepalive msgs that would kill an older rsync. X-Git-Tag: v3.1.1pre1~25 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e461cefbabd6ae82ed5aa6686d0d118931b8fdc8;p=thirdparty%2Frsync.git Avoid useless keepalive msgs that would kill an older rsync. This fix avoids the sending of keep-alive messages from the receiver to the sender when we are still sending the file list (at which time an older rsync would die if it received such a keep-alive message). The messages aren't actually needed, since we haven't forked yet, and the single flow of data keeps the procs alive. --- diff --git a/io.c b/io.c index 2a87919f..c5b1ebc4 100644 --- a/io.c +++ b/io.c @@ -1371,6 +1371,14 @@ void maybe_send_keepalive(time_t now, int flags) if (flags & MSK_ACTIVE_RECEIVER) last_io_in = now; /* Fudge things when we're working hard on the files. */ + /* Early in the transfer (before the receiver forks) the receiving side doesn't + * care if it hasn't sent data in a while as long as it is receiving data (in + * fact, a pre-3.1.0 rsync would die if we tried to send it a keep alive during + * this time). So, if we're an early-receiving proc, just return and let the + * incoming data determine if we timeout. */ + if (!am_sender && !am_receiver && !am_generator) + return; + if (now - last_io_out >= allowed_lull) { /* The receiver is special: it only sends keep-alive messages if it is * actively receiving data. Otherwise, it lets the generator timeout. */