HTTPCLIENT-2170: Classic protocol layer no longer releases the underlying connection back to the pool prematurely while the NTLM handshake is still ongoing
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/MainClientExec.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/MainClientExec.java
index 7bf2ea7..2af5b70 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/MainClientExec.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/MainClientExec.java
@@ -102,8 +102,6 @@
LOG.debug("{} executing {}", exchangeId, new RequestLine(request));
}
try {
- RequestEntityProxy.enhance(request);
-
final ClassicHttpResponse response = execRuntime.execute(exchangeId, request, context);
Object userToken = context.getUserToken();
@@ -136,7 +134,6 @@
execRuntime.releaseEndpoint();
return new CloseableHttpResponse(response, null);
}
- ResponseEntityProxy.enhance(response, execRuntime);
return new CloseableHttpResponse(response, execRuntime);
} catch (final ConnectionShutdownException ex) {
final InterruptedIOException ioex = new InterruptedIOException(
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ProtocolExec.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ProtocolExec.java
index 9b311cd..2edfe4c 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ProtocolExec.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ProtocolExec.java
@@ -140,6 +140,7 @@
}
}
+ RequestEntityProxy.enhance(request);
for (;;) {
@@ -207,6 +208,7 @@
request.addHeader(it.next());
}
} else {
+ ResponseEntityProxy.enhance(response, execRuntime);
return response;
}
}