From: Ondřej Surý Date: Mon, 13 Aug 2018 07:35:42 +0000 (+0200) Subject: Make ENOBUFS a soft error X-Git-Tag: v9.13.3~65^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ebf3083e08f844160e3b868234328060f38dda86;p=thirdparty%2Fbind9.git Make ENOBUFS a soft error --- diff --git a/lib/isc/unix/socket.c b/lib/isc/unix/socket.c index b7bacadcba9..5e12edb6866 100644 --- a/lib/isc/unix/socket.c +++ b/lib/isc/unix/socket.c @@ -255,6 +255,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) @@ -1950,7 +1951,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); @@ -2147,7 +2148,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);