Skip to content

Commit 38a6182

Browse files
committed
don't reuse channel after failing auth when streaming
1 parent c9b3cb2 commit 38a6182

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

client/src/main/java/org/asynchttpclient/netty/handler/HttpProtocol.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,8 @@ private boolean exitAfterHandling401(//
179179
final Request request,//
180180
int statusCode,//
181181
Realm realm,//
182-
ProxyServer proxyServer) {
182+
ProxyServer proxyServer,//
183+
HttpRequest httpRequest) {
183184

184185
if (statusCode != UNAUTHORIZED.code())
185186
return false;
@@ -291,7 +292,7 @@ private boolean exitAfterHandling401(//
291292
final Request nextRequest = new RequestBuilder(future.getCurrentRequest()).setHeaders(requestHeaders).build();
292293

293294
logger.debug("Sending authentication to {}", request.getUri());
294-
if (future.isKeepAlive() && !HttpHeaders.isTransferEncodingChunked(response)) {
295+
if (future.isKeepAlive() && !HttpHeaders.isTransferEncodingChunked(httpRequest) && !HttpHeaders.isTransferEncodingChunked(response)) {
295296
future.setReuseChannel(true);
296297
requestSender.drainChannelAndExecuteNextRequest(channel, future, nextRequest);
297298
} else {
@@ -308,7 +309,8 @@ private boolean exitAfterHandling407(//
308309
HttpResponse response,//
309310
Request request,//
310311
int statusCode,//
311-
ProxyServer proxyServer) {
312+
ProxyServer proxyServer,//
313+
HttpRequest httpRequest) {
312314

313315
if (statusCode != PROXY_AUTHENTICATION_REQUIRED.code())
314316
return false;
@@ -425,7 +427,7 @@ private boolean exitAfterHandling407(//
425427
final Request nextRequest = nextRequestBuilder.build();
426428

427429
logger.debug("Sending proxy authentication to {}", request.getUri());
428-
if (future.isKeepAlive() && !HttpHeaders.isTransferEncodingChunked(response)) {
430+
if (future.isKeepAlive() && !HttpHeaders.isTransferEncodingChunked(httpRequest) && !HttpHeaders.isTransferEncodingChunked(response)) {
429431
future.setConnectAllowed(true);
430432
future.setReuseChannel(true);
431433
requestSender.drainChannelAndExecuteNextRequest(channel, future, nextRequest);
@@ -515,8 +517,8 @@ private boolean handleHttpResponse(final HttpResponse response, final Channel ch
515517
NettyResponseHeaders responseHeaders = new NettyResponseHeaders(response.headers());
516518

517519
return exitAfterProcessingFilters(channel, future, handler, status, responseHeaders) || //
518-
exitAfterHandling401(channel, future, response, request, statusCode, realm, proxyServer) || //
519-
exitAfterHandling407(channel, future, response, request, statusCode, proxyServer) || //
520+
exitAfterHandling401(channel, future, response, request, statusCode, realm, proxyServer, httpRequest) || //
521+
exitAfterHandling407(channel, future, response, request, statusCode, proxyServer, httpRequest) || //
520522
exitAfterHandling100(channel, future, statusCode) || //
521523
exitAfterHandlingRedirect(channel, future, response, request, statusCode, realm) || //
522524
exitAfterHandlingConnect(channel, future, request, proxyServer, statusCode, httpRequest) || //

0 commit comments

Comments
 (0)