package/libwebsockets: add an option to enable lws async dns

Lws now features optional asynchronous, ie, nonblocking recursive DNS
resolution done on the event loop, enable `-DLWS_WITH_SYS_ASYNC_DNS=1`
at cmake to build it in.

The default libc name resolution is via libc `getaddrinfo()`, which is
blocking, possibly for quite long periods (seconds).  If you are
taking care about latency, but want to create outgoing connections,
you can't tolerate this exception from the rule that everything in
lws is nonblocking.

Lws' asynchronous DNS resolver creates a caching name resolver
that directly queries the configured nameserver itself over UDP,
from the event loop.

https://libwebsockets.org/lws-api-doc-main/html/md_READMEs_2README_8async-dns.html

Signed-off-by: Bart Van Severen <bart.vanseveren@barco.com>
Signed-off-by: Thomas Devoogdt <thomas.devoogdt@barco.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
Bart Van Severen 2024-09-20 08:20:13 +02:00 committed by Thomas Petazzoni
parent fb4d73973b
commit b9c7d79eba
2 changed files with 10 additions and 0 deletions

View File

@ -19,6 +19,12 @@ config BR2_PACKAGE_LIBWEBSOCKETS_EXT_POLL
unconditionally compiled in for library versions
prior to 3.2.0.
config BR2_PACKAGE_LIBWEBSOCKETS_ASYNC_DNS
bool "enable async dns support"
help
Enable asynchronous DNS resolver that directly queries
the configured nameserver over UDP, from the event loop.
endif
comment "libwebsockets needs a toolchain w/ dynamic library"

View File

@ -98,4 +98,8 @@ ifeq ($(BR2_PACKAGE_LIBWEBSOCKETS_EXT_POLL),y)
LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_EXTERNAL_POLL=ON
endif
ifeq ($(BR2_PACKAGE_LIBWEBSOCKETS_ASYNC_DNS),y)
LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_SYS_ASYNC_DNS=ON
endif
$(eval $(cmake-package))