From 230085c176ee3686667b49fd469af4d57ffa99cc Mon Sep 17 00:00:00 2001 From: Evan Hunt Date: Fri, 18 Sep 2020 22:33:40 -0700 Subject: [PATCH] fixup! Add isc_uv_udp_connect() shim --- configure.ac | 2 +- lib/isc/netmgr/uv-compat.c | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 50e2b215e1..75882319fa 100644 --- a/configure.ac +++ b/configure.ac @@ -578,7 +578,7 @@ LIBS="$LIBS $LIBUV_LIBS" # Those functions are only provided in newer versions of libuv, we'll be emulating them # for now -AC_CHECK_FUNCS([uv_handle_get_data uv_handle_set_data uv_import uv_udp_connect]) +AC_CHECK_FUNCS([uv_handle_get_data uv_handle_set_data uv_import uv_udp_connect uv_translate_sys_error]) AX_RESTORE_FLAGS([libuv]) # diff --git a/lib/isc/netmgr/uv-compat.c b/lib/isc/netmgr/uv-compat.c index c216876345..51964477e6 100644 --- a/lib/isc/netmgr/uv-compat.c +++ b/lib/isc/netmgr/uv-compat.c @@ -197,14 +197,22 @@ isc_uv_udp_connect(uv_udp_t *handle, const struct sockaddr *addr) { int addrlen = (addr->sa_family == AF_INET) ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6); +#ifdef WIN32 + err = connect(handle->socket, addr, addrlen); +#else /* WIN32 */ err = connect(handle->io_watcher.fd, addr, addrlen); +#endif /* WIN32 */ } while (err == -1 && errno == EINTR); if (err) { #ifdef WIN32 return (uv_translate_sys_error(err)); -#else /* WIN32 */ +#else /* WIN32 */ +#ifdef HAVE_UV_TRANSLATE_SYS_ERROR return (uv_translate_sys_error(errno)); +#else + return (-errno); +#endif /* HAVE_UV_TRANSLATE_SYS_ERROR */ #endif /* WIN32 */ }