]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Avoid libuv 1.35 and 1.36 that have broken recvmmsg implementation
authorOndřej Surý <ondrej@isc.org>
Fri, 3 Feb 2023 14:47:28 +0000 (15:47 +0100)
committerMichał Kępień <michal@isc.org>
Thu, 9 Feb 2023 14:04:52 +0000 (15:04 +0100)
The implementation of UDP recvmmsg in libuv 1.35 and 1.36 is
incomplete and could cause assertion failure under certain
circumstances.

Modify the configure and runtime checks to report a fatal error when
trying to compile or run with the affected versions.

configure.ac
doc/arm/build.inc.rst
lib/isc/netmgr/netmgr.c

index 0a37328e9ce0353da06e8ee69eaad3e205ebecc0..10b82faef088a5391414562bab29b8576e3c9d29 100644 (file)
@@ -586,9 +586,9 @@ AC_CHECK_FUNCS([pthread_setname_np pthread_set_name_np])
 AC_CHECK_HEADERS([pthread_np.h], [], [], [#include <pthread.h>])
 
 # libuv
-AC_MSG_CHECKING([for libuv])
-PKG_CHECK_MODULES([LIBUV], [libuv >= 1.34.0], [],
-                 [AC_MSG_ERROR([libuv >= 1.34.0 not found])])
+PKG_CHECK_MODULES([LIBUV], [libuv >= 1.37.0], [],
+                 [PKG_CHECK_MODULES([LIBUV], [libuv >= 1.34.0 libuv < 1.35.0], [],
+                                    [AC_MSG_ERROR([libuv >= 1.34.0 (except 1.35.0 and 1.36.0) not found])])])
 
 AX_SAVE_FLAGS([libuv])
 CFLAGS="$CFLAGS $LIBUV_CFLAGS"
index 7239b1a3c93dcbb9fe2b64f856bbbe63a0a82659..93a08ecadc4590934f3370658b1f641b683b55e2 100644 (file)
@@ -60,10 +60,12 @@ To build BIND 9, the following packages must be installed:
 - ``perl``
 - ``pkg-config`` / ``pkgconfig`` / ``pkgconf``
 
-BIND 9.19 requires ``libuv`` 1.34.0 or higher. On older systems, an updated
-``libuv`` package needs to be installed from sources such as EPEL, PPA,
-or other native sources. The other option is to build and install
-``libuv`` from source.
+BIND 9.19 requires ``libuv`` 1.34.0 or higher, using ``libuv`` >= 1.40.0
+is recommended. Compiling or running with ``libuv`` 1.35.0 or 1.36.0 is
+not supported, as this could lead to an assertion failure in the UDP
+receive code. On older systems, an updated ``libuv`` package needs to be
+installed from sources such as EPEL, PPA, or other native sources. The
+other option is to build and install ``libuv`` from source.
 
 OpenSSL 1.0.2e or newer is required. If the OpenSSL library is installed
 in a nonstandard location, specify the prefix using
index 8906e560b60589ce98138fdf6e5f87bc3b7d0d31..d7a70a47cc10a99d00fcaa9c69e28a934a31b4ce 100644 (file)
@@ -178,8 +178,6 @@ netmgr_teardown(void *arg) {
 #define MINIMAL_UV_VERSION UV_VERSION(1, 40, 0)
 #elif HAVE_DECL_UV_UDP_RECVMMSG
 #define MINIMAL_UV_VERSION UV_VERSION(1, 37, 0)
-#elif HAVE_DECL_UV_UDP_MMSG_CHUNK
-#define MINIMAL_UV_VERSION UV_VERSION(1, 35, 0)
 #else
 #define MINIMAL_UV_VERSION UV_VERSION(1, 0, 0)
 #endif