]> 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:43:03 +0000 (10:43 +0200)
Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
(cherry picked from commit 866c8f3fff753d3b2a03c1da50e8d53056880a46)

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

index da2db8c6185467fd03d9d7f286d33002bf46ed71..846dbf193be93c08587f61aa0cc1e0cb2a7b012b 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 2c96e067ebfeda8ddb3e547b6e151a2dbdeea4b7..62fde3d9bb52a1e6f274c4c78b050a1f90aafaed 100644 (file)
@@ -93,8 +93,6 @@ private:
 };
 #endif
 
-static constexpr uint32_t MAX_CONCURRENT_STREAMS{100U};
-
 class IncomingDoHCrossProtocolContext : public DOHUnitInterface
 {
 public:
@@ -290,7 +288,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}}};
   auto ret = nghttp2_submit_settings(d_session.get(), NGHTTP2_FLAG_NONE, settings.data(), settings.size());
   if (ret != 0) {
     throw std::runtime_error("Fatal error: " + std::string(nghttp2_strerror(ret)));
@@ -979,7 +977,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 f2b952a79f7009d6dae499510ce3fd02e754e38a..1b5584893eb0f386661e1c70014294baaf5ce7a5 100644 (file)
@@ -1083,7 +1083,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;
     }