]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Make ENOBUFS a soft error
authorOndřej Surý <ondrej@sury.org>
Mon, 13 Aug 2018 07:35:42 +0000 (09:35 +0200)
committerOndřej Surý <ondrej@sury.org>
Mon, 13 Aug 2018 16:51:10 +0000 (18:51 +0200)
lib/isc/unix/socket.c

index b7bacadcba90788364082ae8eacae3f70d66d246..5e12edb68663b1120c10a7b5a122c21106c11add 100644 (file)
@@ -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);