unable to convert libuv error code in udp_send_cb to isc_result: -40: message too long
Summary
When I request a record that should generate UDP Fragements I am gettings theses logs in named.log :
May 26 11:57:14 solid named[9534]: ./bind-9.16/lib/isc/netmgr/udp.c:548: unexpected error:
May 26 11:57:14 solid named[9534]: unable to convert libuv error code in udp_send_cb to isc_result: -40: message too long
BIND version used
BIND 9.16.16 (Stable Release) id:0c314d8
running on FreeBSD amd64 13.0-STABLE FreeBSD 13.0-STABLE #155 stable/13-n245693-6cd1cb27a97-dirty: Thu May 20 01:40:10 UTC 2021 root@fb13-x64-sds80:/usr/obj/usr/src/amd64.amd64/sys/SOLIDSERVER
built by make with '--enable-threads' '--with-make-clean=no' '--with-gssapi=/usr/local' '--with-geoip' '--with-libjson=yes' '--with-libxml2=yes' '--prefix=/' '--enable-filter-aaaa'
compiled by CLANG FreeBSD Clang 11.0.1 (git@github.com:llvm/llvm-project.git llvmorg-11.0.1-0-g43ff75f2c3fe)
compiled with OpenSSL version: OpenSSL 1.1.1k 25 Mar 2021
linked to OpenSSL version: OpenSSL 1.1.1k 25 Mar 2021
compiled with libuv version: 1.41.0
linked to libuv version: 1.41.0
compiled with libxml2 version: 2.9.10
linked to libxml2 version: 20910
compiled with json-c version: 0.15
linked to json-c version: 0.15
compiled with zlib version: 1.2.11
linked to zlib version: 1.2.11
threads support is enabled
Steps to reproduce
-
Set in named.conf :
edns-udp-size 4096;
max-udp-size 4096;
-
Request a record that generate a response with a size greater than 3675
Possible fixes
It seems that is related to : !4668 (66eefac7)
In the commit we can see the new define "setsockopt_off"
#define setsockopt_off(socket, level, name) \
setsockopt(socket, level, name, &(int){ 1 }, sizeof(int))
But instead of sending a value 0 to disable the option, a 1 is send. So it is doing the same thing as the define "setsockopt_on"
editing the netmgr.c by
#define setsockopt_off(socket, level, name) \
setsockopt(socket, level, name, &(int){ 0 }, sizeof(int))
Work as it should
Best regards