From af6fe731fb8250e2f720fdb3ec9c60efba9d3121 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Mon, 13 Aug 2018 09:35:42 +0200 Subject: [PATCH] Make ENOBUFS a soft error (cherry picked from commit ebf3083e08f844160e3b868234328060f38dda86) --- lib/isc/unix/socket.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/isc/unix/socket.c b/lib/isc/unix/socket.c index 20d13c765ed..f844124d74b 100644 --- a/lib/isc/unix/socket.c +++ b/lib/isc/unix/socket.c @@ -256,6 +256,7 @@ typedef enum { poll_idle, poll_active, poll_checking } pollstate_t; */ #define SOFT_ERROR(e) ((e) == EAGAIN || \ (e) == EWOULDBLOCK || \ + (e) == ENOBUFS || \ (e) == EINTR || \ (e) == 0) @@ -1952,7 +1953,7 @@ doio_recv(isc__socket_t *sock, isc_socketevent_t *dev) { SOFT_OR_HARD(EHOSTDOWN, ISC_R_HOSTDOWN); /* HPUX 11.11 can return EADDRNOTAVAIL. */ SOFT_OR_HARD(EADDRNOTAVAIL, ISC_R_ADDRNOTAVAIL); - ALWAYS_HARD(ENOBUFS, ISC_R_NORESOURCES); + SOFT_OR_HARD(ENOBUFS, ISC_R_NORESOURCES); /* Should never get this one but it was seen. */ #ifdef ENOPROTOOPT SOFT_OR_HARD(ENOPROTOOPT, ISC_R_HOSTUNREACH); @@ -2149,7 +2150,7 @@ doio_send(isc__socket_t *sock, isc_socketevent_t *dev) { ALWAYS_HARD(EHOSTDOWN, ISC_R_HOSTUNREACH); #endif ALWAYS_HARD(ENETUNREACH, ISC_R_NETUNREACH); - ALWAYS_HARD(ENOBUFS, ISC_R_NORESOURCES); + SOFT_OR_HARD(ENOBUFS, ISC_R_NORESOURCES); ALWAYS_HARD(EPERM, ISC_R_HOSTUNREACH); ALWAYS_HARD(EPIPE, ISC_R_NOTCONNECTED); ALWAYS_HARD(ECONNRESET, ISC_R_CONNECTIONRESET); -- 2.47.3