diff --git a/SOURCES/rsync-3.1.2-vvv-hang.patch b/SOURCES/rsync-3.1.2-vvv-hang.patch new file mode 100644 index 0000000..d1f8912 --- /dev/null +++ b/SOURCES/rsync-3.1.2-vvv-hang.patch @@ -0,0 +1,33 @@ +diff --git a/io.c b/io.c +index 999c34e5..ceff3784 100644 +--- a/io.c ++++ b/io.c +@@ -954,8 +954,17 @@ int send_msg(enum msgcode code, const char *buf, size_t len, int convert) + } else + #endif + needed = len + 4 + 3; +- if (iobuf.msg.len + needed > iobuf.msg.size) +- perform_io(needed, PIO_NEED_MSGROOM); ++ if (iobuf.msg.len + needed > iobuf.msg.size) { ++ if (!am_receiver) ++ perform_io(needed, PIO_NEED_MSGROOM); ++ else { /* We allow the receiver to increase their iobuf.msg size to avoid a deadlock. */ ++ size_t old_size = iobuf.msg.size; ++ restore_iobuf_size(&iobuf.msg); ++ realloc_xbuf(&iobuf.msg, iobuf.msg.size * 2); ++ if (iobuf.msg.pos + iobuf.msg.len > old_size) ++ memcpy(iobuf.msg.buf + old_size, iobuf.msg.buf, iobuf.msg.pos + iobuf.msg.len - old_size); ++ } ++ } + + pos = iobuf.msg.pos + iobuf.msg.len; /* Must be set after any flushing. */ + if (pos >= iobuf.msg.size) +@@ -1176,7 +1185,7 @@ int read_line(int fd, char *buf, size_t bufsiz, int flags) + + #ifdef ICONV_OPTION + if (flags & RL_CONVERT && iconv_buf.size < bufsiz) +- realloc_xbuf(&iconv_buf, bufsiz + 1024); ++ realloc_xbuf(&iconv_buf, ROUND_UP_1024(bufsiz) + 1024); + #endif + + start: diff --git a/SOURCES/rsyncd.service b/SOURCES/rsyncd.service index 3ffecce..d2d6362 100644 --- a/SOURCES/rsyncd.service +++ b/SOURCES/rsyncd.service @@ -1,6 +1,8 @@ [Unit] Description=fast remote file copy program daemon ConditionPathExists=/etc/rsyncd.conf +Wants=network-online.target +After=network-online.target [Service] EnvironmentFile=/etc/sysconfig/rsyncd diff --git a/SPECS/rsync.spec b/SPECS/rsync.spec index 669986d..e63923f 100644 --- a/SPECS/rsync.spec +++ b/SPECS/rsync.spec @@ -9,7 +9,7 @@ Summary: A program for synchronizing files over a network Name: rsync Version: 3.1.3 -Release: 7%{?dist} +Release: 9%{?dist} Group: Applications/Internet URL: http://rsync.samba.org/ @@ -31,6 +31,7 @@ Patch0: rsync-man.patch Patch1: rsync-3.0.6-iconv-logging.patch Patch2: rsync-3.1.3-covscan.patch Patch3: rsync-3.1.2-remove-symlinks.patch +Patch4: rsync-3.1.2-vvv-hang.patch %description Rsync uses a reliable algorithm to bring remote and host files into @@ -72,6 +73,7 @@ patch -p1 -i patches/copy-devices.diff %patch1 -p1 -b .iconv %patch2 -p1 -b .covscan %patch3 -p1 -b .symlinks +%patch4 -p1 -b .vvv %build @@ -119,6 +121,12 @@ chmod -x support/* %systemd_postun_with_restart rsyncd.service %changelog +* Mon Aug 24 2020 Michal Ruprich - 3.1.3-9 +- Resolves: #1667436 - rsyncd.service fails to start at boot if address is configured + +* Wed Jun 10 2020 Michal Ruprich - 3.1.3-8 +- Resolves: #1775561 - rsync 3.1.2 hangs when run with -vvv to sync a large repository + * Tue Oct 29 2019 Michal Ruprich - 3.1.3-7 - Resolves: #1693162 - remove-source-files fails with symlinks