Mention the latest bug-fix.
[rsync/rsync.git] / io.c
diff --git a/io.c b/io.c
index 42a6bf0..fdaa713 100644 (file)
--- 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) {
@@ -706,7 +713,11 @@ static int readfd_unbuffered(int fd, char *buf, size_t len)
        static size_t remaining;
        static size_t iobuf_in_ndx;
        int tag, ret = 0;
-       char line[MAXPATHLEN+1];
+#if MAXPATHLEN < 4096
+       char line[4096+1024];
+#else
+       char line[MAXPATHLEN+1024];
+#endif
 
        if (!iobuf_in || fd != sock_f_in)
                return read_timeout(fd, buf, len);
@@ -1085,7 +1096,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);
                }