X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/2a0dd9bd70f4610f0bd294a50acc8e3283d70e84..e65154085cd6b58fada9b8f3070448e8bbad6111:/io.c diff --git a/io.c b/io.c index bdfebafc..2dd6d41f 100644 --- a/io.c +++ b/io.c @@ -574,7 +574,7 @@ static int read_timeout(int fd, char *buf, size_t len) len -= n; ret += n; - if (io_timeout && fd == sock_f_in) + if (fd == sock_f_in && (io_timeout || am_generator)) last_io = time(NULL); } @@ -665,6 +665,13 @@ void io_end_buffering(void) } +void maybe_flush_socket(void) +{ + if (iobuf_out && iobuf_out_cnt && time(NULL) - last_io >= 5) + io_flush(NORMAL_FLUSH); +} + + void maybe_send_keepalive(void) { if (time(NULL) - last_io >= allowed_lull) { @@ -1028,11 +1035,6 @@ static void writefd_unbuffered(int fd,char *buf,size_t len) using_r_fds = 1; } else using_r_fds = 0; - if (fd != sock_f_out && iobuf_out_cnt && no_flush == 1) { - FD_SET(sock_f_out, &w_fds); - if (sock_f_out > maxfd) - maxfd = sock_f_out; - } tv.tv_sec = select_timeout; tv.tv_usec = 0; @@ -1089,7 +1091,7 @@ static void writefd_unbuffered(int fd,char *buf,size_t len) total += ret; if (fd == sock_f_out) { - if (io_timeout) + if (io_timeout || am_generator) last_io = time(NULL); sleep_for_bwlimit(ret); }