This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit 58c072aecbe99a4025308f9e2e6be2b6cf0866ff Author: Mark Thomas <ma...@apache.org> AuthorDate: Mon Sep 14 18:47:17 2020 +0100 Don't send an HTTP/2 ping when the connection is known to be closing --- java/org/apache/coyote/http2/Http2UpgradeHandler.java | 13 +++++++++++-- webapps/docs/changelog.xml | 8 ++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/java/org/apache/coyote/http2/Http2UpgradeHandler.java b/java/org/apache/coyote/http2/Http2UpgradeHandler.java index b4b6fda..0d72451 100644 --- a/java/org/apache/coyote/http2/Http2UpgradeHandler.java +++ b/java/org/apache/coyote/http2/Http2UpgradeHandler.java @@ -316,10 +316,15 @@ class Http2UpgradeHandler extends AbstractStream implements InternalHttpUpgradeH SocketState result = SocketState.CLOSED; try { - pingManager.sendPing(false); - switch(status) { case OPEN_READ: + synchronized (socketWrapper) { + if (!socketWrapper.canWrite()) { + // Only send a ping if there is no other data waiting to be sent. + // Ping manager will ensure they aren't sent too frequently. + pingManager.sendPing(false); + } + } try { // There is data to read so use the read timeout while // reading frames ... @@ -827,6 +832,10 @@ class Http2UpgradeHandler extends AbstractStream implements InternalHttpUpgradeH synchronized (socketWrapper) { if (socketWrapper.flush(false)) { socketWrapper.registerWriteInterest(); + } else { + // Only send a ping if there is no other data waiting to be sent. + // Ping manager will ensure they aren't sent too frequently. + pingManager.sendPing(false); } } } diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 895fa31..b840206 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -53,6 +53,14 @@ </update> </changelog> </subsection> + <subsection name="Coyote"> + <changelog> + <fix> + Do not send an HTTP/2 PING frame to measure round-trip time when it is + known that the HTTP/2 connection is not in a good state. (markt) + </fix> + </changelog> + </subsection> <subsection name="Other"> <changelog> <update> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org