mirror of
https://github.com/jlengrand/vert.x.git
synced 2026-03-10 08:51:19 +00:00
HttpClient does not fire HttpClientRequest exception handler after receiving a 100 continue response - fixes #2936 - fixes #2910
This commit is contained in:
@@ -502,7 +502,7 @@ class Http1xClientConnection extends Http1xConnectionBase<WebSocketImpl> impleme
|
||||
requestEnded = this.requestEnded;
|
||||
}
|
||||
if (request != null) {
|
||||
if (response == null) {
|
||||
if (response == null || response.statusCode() == 100) {
|
||||
request.handleException(cause);
|
||||
} else {
|
||||
if (!requestEnded) {
|
||||
|
||||
@@ -349,7 +349,7 @@ class Http2ClientConnection extends Http2ConnectionBase implements HttpClientCon
|
||||
HttpClientRequestBase req;
|
||||
HttpClientResponseImpl resp;
|
||||
synchronized (conn) {
|
||||
req = (!requestEnded || response == null) ? request : null;
|
||||
req = (!requestEnded || response == null || response.statusCode() == 100) ? request : null;
|
||||
resp = response;
|
||||
}
|
||||
if (req != null) {
|
||||
|
||||
@@ -2021,6 +2021,29 @@ public abstract class HttpTest extends HttpTestBase {
|
||||
await();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test100ContinueTimeout() throws Exception {
|
||||
|
||||
waitFor(2);
|
||||
|
||||
server.close();
|
||||
server = vertx.createHttpServer(createBaseServerOptions().setHandle100ContinueAutomatically(false));
|
||||
|
||||
server.requestHandler(req -> {
|
||||
req.response().writeContinue();
|
||||
});
|
||||
|
||||
client.close();
|
||||
client = vertx.createHttpClient(createBaseClientOptions().setIdleTimeout(1));
|
||||
|
||||
startServer(testAddress);
|
||||
|
||||
client.request(HttpMethod.PUT, testAddress, DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, DEFAULT_TEST_URI, resp -> fail()).exceptionHandler(err -> complete()).putHeader("Expect", "100-continue")
|
||||
.continueHandler(v -> complete()).end();
|
||||
|
||||
await();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testClientDrainHandler() {
|
||||
pausingServer(resumeFuture -> {
|
||||
|
||||
Reference in New Issue
Block a user