From c1d6c466251d21d1fb7b513ba2297ebf94d44853 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Tue, 6 Apr 2010 19:32:32 +0200 Subject: [PATCH] udp_send_fec(): Treat ECONNREFUSED like EAGAIN. Writes to udp sockets may return ECONNREFUSED. As this is often only a temporary condition, there is no need to kick the target. This patch makes the udp sender ignore such errors rather than kicking the client from the udp target list on the first error. Thanks to Gerrit Renker for suggesting this change. --- udp_send.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/udp_send.c b/udp_send.c index efe80b6d..533af63a 100644 --- a/udp_send.c +++ b/udp_send.c @@ -237,6 +237,8 @@ static int udp_send_fec(char *buf, size_t len, void *private_data) if (ret < 0) goto fail; ret = send_queued_chunks(ut->fd, ut->cq, 0); + if (ret == -ERRNO_TO_PARA_ERROR(ECONNREFUSED)) + ret = 0; if (ret < 0) goto fail; if (!len) @@ -247,6 +249,8 @@ static int udp_send_fec(char *buf, size_t len, void *private_data) goto fail; } ret = write_nonblock(ut->fd, buf, len, 0); + if (ret == -ERRNO_TO_PARA_ERROR(ECONNREFUSED)) + ret = 0; if (ret < 0) goto fail; if (ret != len) { -- 2.39.5