]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Fix to print warning for when so-sndbuf setsockopt is not granted.
authorW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Mon, 15 Sep 2025 14:11:27 +0000 (16:11 +0200)
committerW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Mon, 15 Sep 2025 14:11:27 +0000 (16:11 +0200)
doc/Changelog
services/listen_dnsport.c

index 3658bf608c08780ce0cb4e387a08c17ddf7dd393..264a097d15771ea40b91ce9d886658c39ec7c87f 100644 (file)
@@ -1,6 +1,9 @@
 15 September 2025: Yorgos
        - Small debug output improvement when attaching an EDE.
 
+15 September 2025: Wouter
+       - Fix to print warning for when so-sndbuf setsockopt is not granted.
+
 11 September 2025: Wouter
        - version set to 1.24.0 for release.
        - tag for 1.24.0rc1.
index b7d3d747c1aaf15d2ee0f89208d448a5e8a518af..f7fcca194b4052cf618e0e2344476bc657b095eb 100644 (file)
@@ -450,7 +450,7 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr,
                 * /proc/sys/net/core/wmem_max or sysctl net.core.wmem_max */
                if(setsockopt(s, SOL_SOCKET, SO_SNDBUFFORCE, (void*)&snd,
                        (socklen_t)sizeof(snd)) < 0) {
-                       if(errno != EPERM) {
+                       if(errno != EPERM && errno != ENOBUFS) {
                                log_err("setsockopt(..., SO_SNDBUFFORCE, "
                                        "...) failed: %s", sock_strerror(errno));
                                sock_close(s);
@@ -458,15 +458,23 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr,
                                *inuse = 0;
                                return -1;
                        }
+                       if(errno != EPERM) {
+                               verbose(VERB_ALGO, "setsockopt(..., SO_SNDBUFFORCE, "
+                                       "...) was not granted: %s", sock_strerror(errno));
+                       }
 #  endif /* SO_SNDBUFFORCE */
                        if(setsockopt(s, SOL_SOCKET, SO_SNDBUF, (void*)&snd,
                                (socklen_t)sizeof(snd)) < 0) {
-                               log_err("setsockopt(..., SO_SNDBUF, "
-                                       "...) failed: %s", sock_strerror(errno));
-                               sock_close(s);
-                               *noproto = 0;
-                               *inuse = 0;
-                               return -1;
+                               if(errno != ENOSYS && errno != ENOBUFS) {
+                                       log_err("setsockopt(..., SO_SNDBUF, "
+                                               "...) failed: %s", sock_strerror(errno));
+                                       sock_close(s);
+                                       *noproto = 0;
+                                       *inuse = 0;
+                                       return -1;
+                               }
+                               log_warn("setsockopt(..., SO_SNDBUF, "
+                                       "...) was not granted: %s", sock_strerror(errno));
                        }
                        /* check if we got the right thing or if system
                         * reduced to some system max.  Warn if so */