Skip to content

Commit 2236696

Browse files
ChristophKaserok2c
authored andcommitted
Check for timeToLive == 0
Allows setting connection timeToLive and validateAfterInactivity to zero to always close or validate a connection
1 parent d72a136 commit 2236696

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

httpclient5/src/main/java/org/apache/hc/client5/http/impl/io/PoolingHttpClientConnectionManager.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -322,17 +322,17 @@ public synchronized ConnectionEndpoint get(
322322
if (poolEntry.hasConnection()) {
323323
final TimeValue timeToLive = connectionConfig.getTimeToLive();
324324
if (TimeValue.isNonNegative(timeToLive)) {
325-
final Deadline deadline = Deadline.calculate(poolEntry.getCreated(), timeToLive);
326-
if (deadline.isExpired()) {
325+
if (timeToLive.getDuration() == 0
326+
|| Deadline.calculate(poolEntry.getCreated(), timeToLive).isExpired()) {
327327
poolEntry.discardConnection(CloseMode.GRACEFUL);
328328
}
329329
}
330330
}
331331
if (poolEntry.hasConnection()) {
332332
final TimeValue timeValue = resolveValidateAfterInactivity(connectionConfig);
333333
if (TimeValue.isNonNegative(timeValue)) {
334-
final Deadline deadline = Deadline.calculate(poolEntry.getUpdated(), timeValue);
335-
if (deadline.isExpired()) {
334+
if (timeValue.getDuration() == 0
335+
|| Deadline.calculate(poolEntry.getUpdated(), timeValue).isExpired()) {
336336
final ManagedHttpClientConnection conn = poolEntry.getConnection();
337337
boolean stale;
338338
try {

httpclient5/src/main/java/org/apache/hc/client5/http/impl/nio/PoolingAsyncClientConnectionManager.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -278,8 +278,8 @@ public void completed(final PoolEntry<HttpRoute, ManagedAsyncClientConnection> p
278278
if (poolEntry.hasConnection()) {
279279
final TimeValue timeToLive = connectionConfig.getTimeToLive();
280280
if (TimeValue.isNonNegative(timeToLive)) {
281-
final Deadline deadline = Deadline.calculate(poolEntry.getCreated(), timeToLive);
282-
if (deadline.isExpired()) {
281+
if (timeToLive.getDuration() == 0
282+
|| Deadline.calculate(poolEntry.getCreated(), timeToLive).isExpired()) {
283283
poolEntry.discardConnection(CloseMode.GRACEFUL);
284284
}
285285
}
@@ -288,8 +288,8 @@ public void completed(final PoolEntry<HttpRoute, ManagedAsyncClientConnection> p
288288
final ManagedAsyncClientConnection connection = poolEntry.getConnection();
289289
final TimeValue timeValue = connectionConfig.getValidateAfterInactivity();
290290
if (connection.isOpen() && TimeValue.isNonNegative(timeValue)) {
291-
final Deadline deadline = Deadline.calculate(poolEntry.getUpdated(), timeValue);
292-
if (deadline.isExpired()) {
291+
if (timeValue.getDuration() == 0
292+
|| Deadline.calculate(poolEntry.getUpdated(), timeValue).isExpired()) {
293293
final ProtocolVersion protocolVersion = connection.getProtocolVersion();
294294
if (protocolVersion != null && protocolVersion.greaterEquals(HttpVersion.HTTP_2_0)) {
295295
connection.submitCommand(new PingCommand(new BasicPingHandler(result -> {

0 commit comments

Comments
 (0)