From 935abae04e76f5de3971ad60b80dfc5d9985d8ad Mon Sep 17 00:00:00 2001 From: Oleg Kalnichevski Date: Fri, 2 Apr 2021 22:00:52 +0200 Subject: [PATCH] HTTPCORE-672: cleanup of H2 connection validation code --- .../PoolingAsyncClientConnectionManager.java | 49 ++++++++++--------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/nio/PoolingAsyncClientConnectionManager.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/nio/PoolingAsyncClientConnectionManager.java index a5d0aabef..584951ae0 100644 --- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/nio/PoolingAsyncClientConnectionManager.java +++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/nio/PoolingAsyncClientConnectionManager.java @@ -243,37 +243,38 @@ public class PoolingAsyncClientConnectionManager implements AsyncClientConnectio @Override public void completed(final PoolEntry poolEntry) { final ManagedAsyncClientConnection connection = poolEntry.getConnection(); - final TimeValue timeValue = PoolingAsyncClientConnectionManager.this.validateAfterInactivity; - if (TimeValue.isNonNegative(timeValue) && connection != null && - poolEntry.getUpdated() + timeValue.toMilliseconds() <= System.currentTimeMillis()) { - final ProtocolVersion protocolVersion = connection.getProtocolVersion(); - if (protocolVersion != null && protocolVersion.greaterEquals(HttpVersion.HTTP_2_0)) { - connection.submitCommand(new PingCommand(new BasicPingHandler(new Callback() { + if (connection != null) { + if (connection.isOpen()) { + final ProtocolVersion protocolVersion = connection.getProtocolVersion(); + if (protocolVersion != null && protocolVersion.greaterEquals(HttpVersion.HTTP_2_0)) { + final TimeValue timeValue = PoolingAsyncClientConnectionManager.this.validateAfterInactivity; + if (TimeValue.isNonNegative(timeValue) && + poolEntry.getUpdated() + timeValue.toMilliseconds() <= System.currentTimeMillis()) { + connection.submitCommand(new PingCommand(new BasicPingHandler(new Callback() { - @Override - public void execute(final Boolean result) { - if (result == null || !result) { - if (LOG.isDebugEnabled()) { - LOG.debug("{} connection {} is stale", id, ConnPoolSupport.getId(connection)); + @Override + public void execute(final Boolean result) { + if (result == null || !result) { + if (LOG.isDebugEnabled()) { + LOG.debug("{} connection {} is stale", id, ConnPoolSupport.getId(connection)); + } + poolEntry.discardConnection(CloseMode.IMMEDIATE); + } + leaseCompleted(poolEntry); } - poolEntry.discardConnection(CloseMode.IMMEDIATE); - } - leaseCompleted(poolEntry); - } - })), Command.Priority.IMMEDIATE); - } else { - if (!connection.isOpen()) { - if (LOG.isDebugEnabled()) { - LOG.debug("{} connection {} is closed", id, ConnPoolSupport.getId(connection)); + })), Command.Priority.IMMEDIATE); + return; } - poolEntry.discardConnection(CloseMode.IMMEDIATE); } - leaseCompleted(poolEntry); + } else { + if (LOG.isDebugEnabled()) { + LOG.debug("{} connection {} is closed", id, ConnPoolSupport.getId(connection)); + } + poolEntry.discardConnection(CloseMode.IMMEDIATE); } - } else { - leaseCompleted(poolEntry); } + leaseCompleted(poolEntry); } @Override