- Parse hard-link info as soon as we get it in inc_recurse mode.
[rsync/rsync.git] / io.c
diff --git a/io.c b/io.c
index 326b2d0..62990b9 100644 (file)
--- a/io.c
+++ b/io.c
@@ -377,6 +377,10 @@ static void read_msg_fd(void)
                }
                flist = recv_file_list(fd);
                flist->parent_ndx = IVAL(buf,0);
+#ifdef SUPPORT_HARD_LINKS
+               if (preserve_hard_links)
+                       match_hard_links(flist);
+#endif
                break;
        case MSG_FLIST_EOF:
                if (len != 0 || !am_generator || !inc_recurse)
@@ -1435,7 +1439,7 @@ static void writefd_unbuffered(int fd, const char *buf, size_t len)
                                (long)len, who_am_i());
                        /* If the other side is sending us error messages, try
                         * to grab any messages they sent before they died. */
-                       while (fd == sock_f_out && io_multiplexing_in) {
+                       while (!am_server && fd == sock_f_out && io_multiplexing_in) {
                                set_io_timeout(30);
                                ignore_timeout = 0;
                                readfd_unbuffered(sock_f_in, io_filesfrom_buf,