X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/19531e1f7444358c7c99726dfac6088b6df69b1e..aabb50d4e391be5768fa76170372e28e85902f95:/io.c diff --git a/io.c b/io.c index 3ef6f127..3faf83d0 100644 --- a/io.c +++ b/io.c @@ -388,6 +388,12 @@ static void read_msg_fd(void) goto invalid_msg; flist_eof = 1; break; + case MSG_IO_ERROR: + if (len != 4) + goto invalid_msg; + readfd(fd, buf, len); + io_error |= IVAL(buf, 0); + break; case MSG_DELETED: if (len >= (int)sizeof buf || !am_generator) goto invalid_msg; @@ -1041,6 +1047,7 @@ static int readfd_unbuffered(int fd, char *buf, size_t len) if (msg_bytes != 4) goto invalid_msg; read_loop(fd, line, msg_bytes); + send_msg_int(MSG_IO_ERROR, IVAL(line, 0)); io_error |= IVAL(line, 0); break; case MSG_DELETED: @@ -1854,6 +1861,8 @@ void start_write_batch(int fd) * actual communication so far depends on whether a daemon * is involved. */ write_int(batch_fd, protocol_version); + if (protocol_version >= 30) + write_byte(batch_fd, inc_recurse); write_int(batch_fd, checksum_seed); if (am_sender)