Hi,
Following up on our mail exchange here is the report you asked for.
On a GnuTLS build, a large synchronisation never finishes in one run. It aborts after roughly 7.4 GiB moved over a single connection, with
Read-error while receiving data. # receiving node
Write-error while sending data. # sending node
and resumes where it stopped on the next run. Pushing ~31 GB / 56k files to two peers took seven runs of csync2 to converge.
What ruled out a flaky link is that the abort point is deterministic: 8.0 GB, then 15.4 GB, then 22.9 GB transferred, the same figures on two different peers
and again after rebuilding the package from source.
I patched READ() and WRITE() in conn.c to log what GnuTLS actually returns before csync2 gives up. Both ends report the same thing:
sender: rc=-28 (Resource temporarily unavailable, try again.) count=512
receiver: rc=-28 (Resource temporarily unavailable, try again.) fatal=0 count=512