read_sum_head() in io.c expects the checksum count to be a signed int (most likely should be long). For large file counts, this can become negative: receiving file list ... 2289961 files to consider Invalid checksum count -909869055 [sender] rsync error: protocol incompatibility (code 2) at io.c(1361) [sender=3.0.2] rsync: connection unexpectedly closed (31026252 bytes received so far) [receiver] rsync error: error in rsync protocol data stream (code 12) at io.c(635) [receiver=3.0.2] rsync: connection unexpectedly closed (31026252 bytes received so far) [generator] rsync error: error in rsync protocol data stream (code 12) at io.c(635) [generator=3.0.2] ... and this is only a subfolder. Working with the original 55137908 in one block doesn't work at all.
seems like a broken directory entry causes this: -rwxr-x-w- 1 1727 521 1006641549938245 2007-12-10 15:04 709.jpg .. so this is an FS problem, not an rsync problem. rsync should provide a better error description, though.
I agree that the generator should not request a file that it cannot send the right count of checksums for. (Which should be something in the range of a 256 TB file or so.)
The code now checks to ensure that the checksum structure is valid before sending it over the wire.