]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add uv_req_get_data() and uv_req_set_data() compatibility shims
authorOndřej Surý <ondrej@sury.org>
Thu, 27 May 2021 09:46:38 +0000 (11:46 +0200)
committerOndřej Surý <ondrej@sury.org>
Mon, 31 May 2021 12:52:05 +0000 (14:52 +0200)
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.

config.h.win32
configure.ac
lib/isc/netmgr/uv-compat.h

index c76993dd8a88d79a09e6a5f5958974999f5dabc4..abb3ba2957730f1dc2e3a3872ada55d4873e5d75 100644 (file)
@@ -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@
index 467c7d14d7b0e26951163c4b9233806fe6479d57..dc458b41725971a0953100d0f6c2833748e4f2fb 100644 (file)
@@ -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
index 8cd4b160f571fcc61dbd2a3c38e11abe96cab3cc..9d9b437294f2f47c5c38e152727321b027c55fb2 100644 (file)
@@ -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