Skip to content

Commit bb211ab

Browse files
committed
Don't send "Connection: close" on HTTP/1.0, close AsyncHttpClient#910
1 parent 407cff0 commit bb211ab

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

src/main/java/com/ning/http/client/providers/jdk/JDKAsyncHttpProvider.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -469,8 +469,9 @@ private void configure(Uri uri, HttpURLConnection urlConnection, Request request
469469
}
470470
}
471471

472-
String ka = AsyncHttpProviderUtils.keepAliveHeaderValue(config);
473-
urlConnection.setRequestProperty("Connection", ka);
472+
String ka = AsyncHttpProviderUtils.connectionHeader(false, false);
473+
if (ka != null)
474+
urlConnection.setRequestProperty("Connection", ka);
474475
ProxyServer proxyServer = ProxyUtils.getProxyServer(config, request);
475476
boolean avoidProxy = ProxyUtils.avoidProxy(proxyServer, uri.getHost());
476477
if (!avoidProxy) {

src/main/java/com/ning/http/client/providers/netty/request/NettyRequestFactory.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
package com.ning.http.client.providers.netty.request;
1515

1616
import static com.ning.http.client.providers.netty.ws.WebSocketUtils.getKey;
17+
import static com.ning.http.util.AsyncHttpProviderUtils.DEFAULT_CHARSET;
1718
import static com.ning.http.util.AsyncHttpProviderUtils.*;
1819
import static com.ning.http.util.AuthenticatorUtils.computeBasicAuthentication;
1920
import static com.ning.http.util.AuthenticatorUtils.computeDigestAuthentication;
@@ -271,7 +272,9 @@ public NettyRequest newNettyRequest(Request request, Uri uri, boolean forceConne
271272
HttpMethod method = forceConnect ? HttpMethod.CONNECT : HttpMethod.valueOf(request.getMethod());
272273
boolean connect = method == HttpMethod.CONNECT;
273274

274-
HttpVersion httpVersion = connect && proxyServer.isForceHttp10() ? HttpVersion.HTTP_1_0 : HttpVersion.HTTP_1_1;
275+
boolean allowConnectionPooling = config.isAllowPoolingConnections() && (!isSecure(uri) || config.isAllowPoolingSslConnections());
276+
277+
HttpVersion httpVersion = !allowConnectionPooling || (connect && proxyServer.isForceHttp10()) ? HttpVersion.HTTP_1_0 : HttpVersion.HTTP_1_1;
275278
String requestUri = requestUri(uri, proxyServer, connect);
276279

277280
NettyBody body = body(request, connect);
@@ -326,7 +329,9 @@ public NettyRequest newNettyRequest(Request request, Uri uri, boolean forceConne
326329
.set(HttpHeaders.Names.SEC_WEBSOCKET_VERSION, "13");
327330

328331
} else if (!headers.contains(HttpHeaders.Names.CONNECTION)) {
329-
headers.set(HttpHeaders.Names.CONNECTION, keepAliveHeaderValue(config));
332+
String connectionHeaderValue = connectionHeader(allowConnectionPooling, httpVersion == HttpVersion.HTTP_1_1);
333+
if (connectionHeaderValue != null)
334+
headers.set(HttpHeaders.Names.CONNECTION, connectionHeaderValue);
330335
}
331336

332337
if (!headers.contains(HttpHeaders.Names.HOST))

src/main/java/com/ning/http/util/AsyncHttpProviderUtils.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,13 @@ public static String parseCharset(String contentType) {
157157
return null;
158158
}
159159

160-
public static String keepAliveHeaderValue(AsyncHttpClientConfig config) {
161-
return config.isAllowPoolingConnections() ? "keep-alive" : "close";
160+
public static String connectionHeader(boolean allowConnectionPooling, boolean http11) {
161+
if (allowConnectionPooling)
162+
return "keep-alive";
163+
else if (http11)
164+
return "close";
165+
else
166+
return null;
162167
}
163168

164169
public static int requestTimeout(AsyncHttpClientConfig config, Request request) {

0 commit comments

Comments
 (0)