From: Remi Gacogne Date: Tue, 4 Feb 2025 15:24:08 +0000 (+0100) Subject: dnsdist: Handle Quiche >= 0.23.0 since the API changed X-Git-Tag: dnsdist-2.0.0-alpha1~125^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F15118%2Fhead;p=thirdparty%2Fpdns.git dnsdist: Handle Quiche >= 0.23.0 since the API changed Quiche 0.23.0 has renamed `quiche_h3_event_headers_has_body` to `quiche_h3_event_headers_has_more_frames`, so we need to handle that. --- diff --git a/pdns/dnsdistdist/doh3.cc b/pdns/dnsdistdist/doh3.cc index c67f053db9..e4da7986a5 100644 --- a/pdns/dnsdistdist/doh3.cc +++ b/pdns/dnsdistdist/doh3.cc @@ -771,7 +771,11 @@ static void processH3HeaderEvent(ClientState& clientState, DOH3Frontend& fronten } if (headers.at(":method") == "POST") { +#if defined(HAVE_QUICHE_H3_EVENT_HEADERS_HAS_MORE_FRAMES) + if (!quiche_h3_event_headers_has_more_frames(event)) { +#else if (!quiche_h3_event_headers_has_body(event)) { +#endif handleImmediateError("Empty POST query"); } return; diff --git a/pdns/dnsdistdist/m4/pdns_with_quiche.m4 b/pdns/dnsdistdist/m4/pdns_with_quiche.m4 index 784c9cb869..e663185f7c 100644 --- a/pdns/dnsdistdist/m4/pdns_with_quiche.m4 +++ b/pdns/dnsdistdist/m4/pdns_with_quiche.m4 @@ -10,16 +10,23 @@ AC_DEFUN([PDNS_WITH_QUICHE], [ AS_IF([test "x$with_quiche" != "xno"], [ AS_IF([test "x$with_quiche" = "xyes" -o "x$with_quiche" = "xauto"], [ - PKG_CHECK_MODULES([QUICHE], [quiche >= 0.22.0], [ + PKG_CHECK_MODULES([QUICHE], [quiche >= 0.23.0], [ [HAVE_QUICHE=1] AC_DEFINE([HAVE_QUICHE], [1], [Define to 1 if you have quiche]) + AC_DEFINE([HAVE_QUICHE_H3_EVENT_HEADERS_HAS_MORE_FRAMES], [1], [Define to 1 if the Quiche API has quiche_h3_event_headers_has_more_frames instead of quiche_h3_event_headers_has_body]) AC_DEFINE([HAVE_QUICHE_STREAM_ERROR_CODES], [1], [Define to 1 if the Quiche API includes error code in quiche_conn_stream_recv and quiche_conn_stream_send]) ], [ - # Quiche is older than 0.22.0, or no Quiche at all - PKG_CHECK_MODULES([QUICHE], [quiche >= 0.15.0], [ + PKG_CHECK_MODULES([QUICHE], [quiche >= 0.22.0], [ [HAVE_QUICHE=1] AC_DEFINE([HAVE_QUICHE], [1], [Define to 1 if you have quiche]) - ], [ : ]) + AC_DEFINE([HAVE_QUICHE_STREAM_ERROR_CODES], [1], [Define to 1 if the Quiche API includes error code in quiche_conn_stream_recv and quiche_conn_stream_send]) + ], [ + # Quiche is older than 0.22.0, or no Quiche at all + PKG_CHECK_MODULES([QUICHE], [quiche >= 0.15.0], [ + [HAVE_QUICHE=1] + AC_DEFINE([HAVE_QUICHE], [1], [Define to 1 if you have quiche]) + ], [ : ]) + ]) ]) AS_IF([test "x$HAVE_QUICHE" = "x1"], [ save_CFLAGS=$CFLAGS diff --git a/pdns/dnsdistdist/meson/quiche/meson.build b/pdns/dnsdistdist/meson/quiche/meson.build index 0774c1a58d..d03aade91f 100644 --- a/pdns/dnsdistdist/meson/quiche/meson.build +++ b/pdns/dnsdistdist/meson/quiche/meson.build @@ -2,7 +2,12 @@ dep_libquiche = dependency('', required: false) opt_libquiche = get_option('quiche') if (get_option('dns-over-quic') or get_option('dns-over-http3')) and opt_libquiche.allowed() - dep_libquiche = dependency('quiche', version: '>= 0.22.0', required: opt_libquiche) + dep_libquiche = dependency('quiche', version: '>= 0.23.0', required: opt_libquiche) + if dep_libquiche.found() + conf.set('HAVE_QUICHE_H3_EVENT_HEADERS_HAS_MORE_FRAMES', dep_libquiche.found(), description: 'if the Quiche API has quiche_h3_event_headers_has_more_frames instead of quiche_h3_event_headers_has_body') + else + dep_libquiche = dependency('quiche', version: '>= 0.22.0', required: opt_libquiche) + endif if dep_libquiche.found() conf.set('HAVE_QUICHE_STREAM_ERROR_CODES', dep_libquiche.found(), description: 'if the Quiche API includes error code in quiche_conn_stream_recv and quiche_conn_stream_send')