Skip to content
This repository was archived by the owner on Jul 21, 2023. It is now read-only.

Commit 0204ca3

Browse files
author
Stephane Landelle
committed
Make idleConnectionTimeout effective when less than requestTimeout, close AsyncHttpClient#120
1 parent 92ea551 commit 0204ca3

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

providers/netty/src/main/java/com/ning/http/client/providers/netty/NettyAsyncHttpProvider.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -550,9 +550,11 @@ public void operationComplete(ChannelFuture cf) {
550550
try {
551551
future.touch();
552552
int requestTimeout = AsyncHttpProviderUtils.requestTimeout(config, future.getRequest());
553-
if (requestTimeout != -1 && !future.isDone() && !future.isCancelled()) {
553+
int schedulePeriod = requestTimeout != -1 ? (config.getIdleConnectionTimeoutInMs() != -1 ? Math.min(requestTimeout, config.getIdleConnectionTimeoutInMs()) : requestTimeout) : config.getIdleConnectionTimeoutInMs();
554+
555+
if (schedulePeriod != -1 && !future.isDone() && !future.isCancelled()) {
554556
ReaperFuture reaperFuture = new ReaperFuture(future);
555-
Future<?> scheduledFuture = config.reaper().scheduleAtFixedRate(reaperFuture, 0, requestTimeout, TimeUnit.MILLISECONDS);
557+
Future<?> scheduledFuture = config.reaper().scheduleAtFixedRate(reaperFuture, 0, schedulePeriod, TimeUnit.MILLISECONDS);
556558
reaperFuture.setScheduledFuture(scheduledFuture);
557559
future.setReaperFuture(reaperFuture);
558560
}
@@ -1606,7 +1608,15 @@ private final static int computeAndSetContentLength(Request request, HttpRequest
16061608
public static <T> NettyResponseFuture<T> newFuture(URI uri, Request request, AsyncHandler<T> asyncHandler, HttpRequest nettyRequest, AsyncHttpClientConfig config, NettyAsyncHttpProvider provider, ProxyServer proxyServer) {
16071609

16081610
int requestTimeout = AsyncHttpProviderUtils.requestTimeout(config, request);
1609-
NettyResponseFuture<T> f = new NettyResponseFuture<T>(uri, request, asyncHandler, nettyRequest, requestTimeout, config.getIdleConnectionTimeoutInMs(), provider, request.getConnectionPoolKeyStrategy(), proxyServer);
1611+
NettyResponseFuture<T> f = new NettyResponseFuture<T>(uri,//
1612+
request,//
1613+
asyncHandler,//
1614+
nettyRequest,//
1615+
requestTimeout,//
1616+
config.getIdleConnectionTimeoutInMs(),//
1617+
provider,//
1618+
request.getConnectionPoolKeyStrategy(),//
1619+
proxyServer);
16101620

16111621
if (request.getHeaders().getFirstValue("Expect") != null && request.getHeaders().getFirstValue("Expect").equalsIgnoreCase("100-Continue")) {
16121622
f.getAndSetWriteBody(false);

0 commit comments

Comments
 (0)