]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Reply to HTTP/2 PING frames immediately 14163/head
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 3 May 2024 12:28:12 +0000 (14:28 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Mon, 13 May 2024 14:20:56 +0000 (16:20 +0200)
We usually buffer a bit to avoid sending a lot of small data chunks
on the wire (or to the kernel anyway), but for `HTTP/2 PING` frames
that are not followed by anything else calling for a response, this
causes an issue as these frames are designed to measure the latency
between a client and a server, and are used by HTTP/2 proxies to
ensure that a connection can be reused.

(cherry picked from commit 4170083b33b171b150257311ef832c743f4d32c6)

pdns/dnsdistdist/dnsdist-nghttp2-in.cc

index e40f5e64b1725cc9fadde909934af3a5adc7d0d2..a016363c6fcbe0a067e9bcb4789fd2337e2cbdce 100644 (file)
@@ -922,6 +922,9 @@ int IncomingHTTP2Connection::on_frame_recv_callback(nghttp2_session* session, co
       return NGHTTP2_ERR_CALLBACK_FAILURE;
     }
   }
+  else if (frame->hd.type == NGHTTP2_PING) {
+    conn->d_needFlush = true;
+  }
 
   return 0;
 }