On at least one occassion, I saw the repair queue fail with an EAGAIN. libsoccr doesn't do this, so I'm not sure whether this is really the right thing. Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au> --- tcp.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tcp.c b/tcp.c index f18b2913..39035e14 100644 --- a/tcp.c +++ b/tcp.c @@ -2957,6 +2957,8 @@ static int tcp_flow_repair_queue(int s, size_t len, uint8_t *buf) ssize_t rc = send(s, p, MIN(len, chunk), 0); if (rc < 0) { + if (errno == EAGAIN || errno == EWOULDBLOCK) + continue; if ((errno == ENOBUFS || errno == ENOMEM) && chunk >= TCP_MIGRATE_RESTORE_CHUNK_MIN) { chunk /= 2; -- 2.48.1