From: Ondřej Surý Date: Thu, 27 May 2021 09:46:38 +0000 (+0200) Subject: Add uv_req_get_data() and uv_req_set_data() compatibility shims X-Git-Tag: v9.17.14~13^2~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f752840db39eaceb93094e56a378444fba676794;p=thirdparty%2Fbind9.git Add uv_req_get_data() and uv_req_set_data() compatibility shims The uv_req_get_data() and uv_req_set_data() functions were introduced in libuv >= 1.19.0, so we need to add compatibility shims with older libuv versions. --- diff --git a/config.h.win32 b/config.h.win32 index c76993dd8a8..abb3ba29577 100644 --- a/config.h.win32 +++ b/config.h.win32 @@ -384,6 +384,12 @@ typedef __int64 off_t; /* Define to 1 if you have the `uv_handle_set_data' function. */ #define HAVE_UV_HANDLE_SET_DATA 1 +/* Define to 1 if you have the `uv_req_get_data' function. */ +#define HAVE_UV_REQ_GET_DATA 1 + +/* Define to 1 if you have the `uv_req_set_data' function. */ +#define HAVE_UV_REQ_SET_DATA 1 + /* GSSAPI Related defines */ @HAVE_GSSAPI@ @HAVE_GSSAPI_H@ diff --git a/configure.ac b/configure.ac index 467c7d14d7b..dc458b41725 100644 --- a/configure.ac +++ b/configure.ac @@ -600,7 +600,9 @@ 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_udp_connect uv_translate_sys_error uv_sleep]) +AC_CHECK_FUNCS([uv_handle_get_data uv_handle_set_data]) +AC_CHECK_FUNCS([uv_req_get_data uv_req_set_data]) +AC_CHECK_FUNCS([uv_udp_connect uv_translate_sys_error uv_sleep]) AX_RESTORE_FLAGS([libuv]) # libnghttp2 diff --git a/lib/isc/netmgr/uv-compat.h b/lib/isc/netmgr/uv-compat.h index 8cd4b160f57..9d9b437294f 100644 --- a/lib/isc/netmgr/uv-compat.h +++ b/lib/isc/netmgr/uv-compat.h @@ -33,6 +33,20 @@ uv_handle_set_data(uv_handle_t *handle, void *data) { } #endif /* ifndef HAVE_UV_HANDLE_SET_DATA */ +#ifndef HAVE_UV_REQ_GET_DATA +static inline void * +uv_req_get_data(const uv_req_t *req) { + return (req->data); +} +#endif /* ifndef HAVE_UV_REQ_GET_DATA */ + +#ifndef HAVE_UV_REQ_SET_DATA +static inline void +uv_req_set_data(uv_req_t *req, void *data) { + req->data = data; +} +#endif /* ifndef HAVE_UV_REQ_SET_DATA */ + #ifndef HAVE_UV_SLEEP #define uv_sleep(msec) usleep(msec * 1000) #endif