From 0ea6db0e3b8e600fa35b84842e3831b2ab6cf9ac Mon Sep 17 00:00:00 2001 From: Otto Moerbeek Date: Fri, 16 Dec 2022 09:24:44 +0100 Subject: [PATCH] For setting socket buf size not decreasing is not an error (cherry picked from commit fe65dec04f3fadaca8f5319cf02f4b302463afe9) --- pdns/iputils.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pdns/iputils.cc b/pdns/iputils.cc index 528ae90149..1226368738 100644 --- a/pdns/iputils.cc +++ b/pdns/iputils.cc @@ -516,11 +516,13 @@ void setSocketBuffer(int fd, int optname, uint32_t size) uint32_t psize = 0; socklen_t len = sizeof(psize); - if (!getsockopt(fd, SOL_SOCKET, optname, &psize, &len) && psize > size) { - throw std::runtime_error("Not decreasing socket buffer size from " + std::to_string(psize) + " to " + std::to_string(size)); + if (getsockopt(fd, SOL_SOCKET, optname, &psize, &len) != 0) { + throw std::runtime_error("Unable to retrieve socket buffer size:" + stringerror()); } - - if (setsockopt(fd, SOL_SOCKET, optname, &size, sizeof(size)) < 0) { + if (psize >= size) { + return; + } + if (setsockopt(fd, SOL_SOCKET, optname, &size, sizeof(size)) != 0) { throw std::runtime_error("Unable to raise socket buffer size to " + std::to_string(size) + ": " + stringerror()); } } -- 2.47.2