]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Fix the number of concurrent queries on a backend TCP conn 12622/head
authorRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 23 Jun 2022 10:36:17 +0000 (12:36 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Mon, 6 Mar 2023 15:37:08 +0000 (16:37 +0100)
When we are in the process of sending a query to the backend, that
query is no longer accounted in the "queued" queries nor it is in
the "queued" responses, but we need to take it into account.
Otherwise we might be sending two concurrent queries to a backend
that does not support out-of-order processing (increasing our
latency), or even worse to one that does not support pipelining.

(cherry picked from commit 2848406e55b5a1d2e35bfa9f7c4dbb0c49989a1b)

pdns/dnsdistdist/dnsdist-tcp-downstream.hh

index e796efb98f7941230ac97c68b474306f8dfd797e..11847a10b323774b14cca5f1d2bbca9b94d65822 100644 (file)
@@ -241,7 +241,7 @@ public:
 
   bool reachedMaxConcurrentQueries() const override
   {
-    const size_t concurrent = d_pendingQueries.size() + d_pendingResponses.size();
+    const size_t concurrent = d_pendingQueries.size() + d_pendingResponses.size() + (d_state == State::sendingQueryToBackend ? 1 : 0);
     if (concurrent > 0 && concurrent >= d_ds->d_maxInFlightQueriesPerConn) {
       return true;
     }