From c4fec42922fe9a1a5a83352e28ac5cc657b08b4e Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Fri, 15 Nov 2019 11:46:47 +0100 Subject: [PATCH] HTTP/1 stream should synchronise when updating the connection stream - see #3196 --- .../http/impl/Http1xClientConnection.java | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/main/java/io/vertx/core/http/impl/Http1xClientConnection.java b/src/main/java/io/vertx/core/http/impl/Http1xClientConnection.java index c0e41e2f2..67db9ddfc 100644 --- a/src/main/java/io/vertx/core/http/impl/Http1xClientConnection.java +++ b/src/main/java/io/vertx/core/http/impl/Http1xClientConnection.java @@ -301,18 +301,20 @@ class Http1xClientConnection extends Http1xConnectionBase impleme @Override public void writeHead(HttpMethod method, String rawMethod, String uri, MultiMap headers, String hostHeader, boolean chunked, ByteBuf buf, boolean end, StreamPriority priority, Handler contHandler, Handler> handler) { + synchronized (conn) { + if (buf != null) { + bytesWritten += buf.readableBytes(); + } + continueHandler = contHandler; + if (conn.responseInProgress == null) { + conn.responseInProgress = this; + } else { + conn.responseInProgress.append(this); + } + next = null; + } HttpRequest request = conn.createRequest(method, rawMethod, uri, headers, hostHeader, chunked); conn.sendRequest(request, buf, end, handler); - if (buf != null) { - bytesWritten += buf.readableBytes(); - } - continueHandler = contHandler; - if (conn.responseInProgress == null) { - conn.responseInProgress = this; - } else { - conn.responseInProgress.append(this); - } - next = null; } private boolean handleChunk(Buffer buff) {