Rsync 2.6.4 Multiplexing Overflows when File Name Too Long (cwRsync)

Wayne Davison wayned at samba.org
Mon Apr 4 01:10:15 GMT 2005


On Fri, Apr 01, 2005 at 03:54:38PM -0500, Benjamin Watkins wrote:
> multiplexing overflow 1:296 [sender]

This indicates that there is an error message arriving (1) that has a
length of 296 bytes, but this is too long for the "line" buffer in
readfd_unbuffered().  I changed the length of this buffer from 1024
bytes to MAXPATHLEN+1 because it was too short for receiving info/error
messages for really long file names (since a normal system has a
MAXPATHLEN that is closer to 4 KB).  (Hmm, is MAXPATHLEN really supposed
to be that short under Cygwin?  Surprising...)

Anyway, the simple solution is to just make the line buffer larger.
I'll attach a patch.

> In addition, the client actually exits with a status code of 3072, not
> 12 as indicated by the standard error message.

That sounds like a problem with your shell or the Cygwin environment
because rsync exits with the right error code under Linux.

..wayne..
-------------- next part --------------
--- io.c	4 Apr 2005 00:48:39 -0000	1.167
+++ io.c	4 Apr 2005 01:07:10 -0000
@@ -706,7 +706,11 @@ static int readfd_unbuffered(int fd, cha
 	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);


More information about the rsync mailing list