]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Define `dnsdist::doh::MAX_INCOMING_CONCURRENT_STREAMS`
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 20 Jun 2025 11:44:33 +0000 (13:44 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 28 Aug 2025 08:17:56 +0000 (10:17 +0200)
Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
(cherry picked from commit 866c8f3fff753d3b2a03c1da50e8d53056880a46)

pdns/dnsdistdist/dnsdist-doh-common.hh
pdns/dnsdistdist/dnsdist-nghttp2-in.cc
pdns/dnsdistdist/doh.cc

index d485e7a5d48e1c1de05b3f8b7f803e4dc1eb4811..74f12b2fac61b245a0d6714e1fcf5e1a57782bf7 100644 (file)
@@ -35,6 +35,8 @@
 
 namespace dnsdist::doh
 {
+static constexpr uint32_t MAX_INCOMING_CONCURRENT_STREAMS{100U};
+
 std::optional<PacketBuffer> getPayloadFromPath(const std::string_view& path);
 }
 
index b7983314b41a9b839ae974b8444bbc90d1780be0..2ada93a4a943d096d8f12f8aca83272dd3a92f9f 100644 (file)
@@ -93,8 +93,6 @@ private:
 };
 #endif
 
-static constexpr uint32_t MAX_CONCURRENT_STREAMS{100U};
-
 class IncomingDoHCrossProtocolContext : public DOHUnitInterface
 {
 public:
@@ -294,7 +292,7 @@ bool IncomingHTTP2Connection::checkALPN()
 
 void IncomingHTTP2Connection::handleConnectionReady()
 {
-  constexpr std::array<nghttp2_settings_entry, 1> settings{{{NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, MAX_CONCURRENT_STREAMS}}};
+  constexpr std::array<nghttp2_settings_entry, 1> settings{{{NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, dnsdist::doh::MAX_INCOMING_CONCURRENT_STREAMS}}};
   constexpr std::array<nghttp2_settings_entry, 1> nearLimitsSettings{{{NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 1U}}};
   auto ret = nghttp2_submit_settings(d_session.get(), NGHTTP2_FLAG_NONE, isNearTCPLimits() ? nearLimitsSettings.data() : settings.data(), isNearTCPLimits() ? nearLimitsSettings.size() : settings.size());
   if (ret != 0) {
@@ -987,7 +985,7 @@ int IncomingHTTP2Connection::on_begin_headers_callback(nghttp2_session* session,
     return 0;
   };
 
-  if (conn->getConcurrentStreamsCount() >= MAX_CONCURRENT_STREAMS) {
+  if (conn->getConcurrentStreamsCount() >= dnsdist::doh::MAX_INCOMING_CONCURRENT_STREAMS) {
     vinfolog("Too many concurrent streams on connection from %d", conn->d_ci.remote.toStringWithPort());
     return close_connection(conn, frame->hd.stream_id, conn->d_ci.remote);
   }
index 6dfff332236fa1273c49e6a515f3f2aa8cf63268..ea28a020e2bd45b73a06121b801291ebaa64d7ae 100644 (file)
@@ -1085,7 +1085,7 @@ static int doh_handler(h2o_handler_t *self, h2o_req_t *req)
     }
 
     auto& conn = t_conns.at(descriptor);
-    if (conn.d_concurrentStreams >= 100U) {
+    if (conn.d_concurrentStreams >= dnsdist::doh::MAX_INCOMING_CONCURRENT_STREAMS) {
       vinfolog("Too many concurrent streams on connection from %d", conn.d_remote.toStringWithPort());
       return 0;
     }