diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpRequestExecutor.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpRequestExecutor.java index 8f777243a..e19d7f6e4 100644 --- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpRequestExecutor.java +++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpRequestExecutor.java @@ -74,7 +74,7 @@ public class HttpRequestExecutor { public static final Timeout DEFAULT_WAIT_FOR_CONTINUE = Timeout.ofSeconds(3); - public static final Timeout DEFAULT_WAIT_FOR_EARLY_RESPONSE = Timeout.ofMilliseconds(5); + public static final Timeout DEFAULT_WAIT_FOR_EARLY_RESPONSE = Timeout.ofMilliseconds(50); public static final long LARGE_MESSAGE_LEN = 64 * 1024; private final Timeout waitForContinue; @@ -162,7 +162,11 @@ public ClassicHttpResponse execute( final Header expect = request.getFirstHeader(HttpHeaders.EXPECT); expectContinue = expect != null && HeaderElements.CONTINUE.equalsIgnoreCase(expect.getValue()); if (!expectContinue) { - if (entity.getContentLength() > LARGE_MESSAGE_LEN && conn.isDataAvailable(waitForEarlyResponse)) { + final boolean largeEntity = entity.getContentLength() > LARGE_MESSAGE_LEN; + if (largeEntity) { + conn.flush(); + } + if (largeEntity && conn.isDataAvailable(waitForEarlyResponse)) { conn.terminateRequest(request); } else { conn.sendRequestEntity(request);