|
21 | 21 | import static org.asynchttpclient.util.ProxyUtils.getProxyServer;
|
22 | 22 | import io.netty.bootstrap.Bootstrap;
|
23 | 23 | import io.netty.channel.Channel;
|
| 24 | +import io.netty.channel.ChannelFuture; |
| 25 | +import io.netty.channel.ChannelProgressivePromise; |
24 | 26 | import io.netty.handler.codec.http.DefaultHttpHeaders;
|
25 | 27 | import io.netty.handler.codec.http.HttpHeaders;
|
26 | 28 | import io.netty.handler.codec.http.HttpMethod;
|
@@ -325,14 +327,18 @@ public <T> void writeRequest(NettyResponseFuture<T> future, Channel channel) {
|
325 | 327 | if (handler instanceof TransferCompletionHandler)
|
326 | 328 | configureTransferAdapter(handler, httpRequest);
|
327 | 329 |
|
| 330 | + boolean writeBody = !future.isDontWriteBodyBecauseExpectContinue() && httpRequest.getMethod() != HttpMethod.CONNECT && nettyRequest.getBody() != null; |
| 331 | + |
328 | 332 | if (!future.isHeadersAlreadyWrittenOnContinue()) {
|
329 | 333 | if (future.getAsyncHandler() instanceof AsyncHandlerExtensions)
|
330 | 334 | AsyncHandlerExtensions.class.cast(future.getAsyncHandler()).onRequestSend(nettyRequest);
|
331 | 335 |
|
332 |
| - channel.writeAndFlush(httpRequest, channel.newProgressivePromise()).addListener(new ProgressListener(future.getAsyncHandler(), future, true, 0L)); |
| 336 | + ChannelProgressivePromise promise = channel.newProgressivePromise(); |
| 337 | + ChannelFuture f = writeBody ? channel.write(httpRequest, promise) : channel.writeAndFlush(httpRequest, promise); |
| 338 | + f.addListener(new ProgressListener(future.getAsyncHandler(), future, true, 0L)); |
333 | 339 | }
|
334 | 340 |
|
335 |
| - if (!future.isDontWriteBodyBecauseExpectContinue() && httpRequest.getMethod() != HttpMethod.CONNECT && nettyRequest.getBody() != null) |
| 341 | + if (writeBody) |
336 | 342 | nettyRequest.getBody().write(channel, future);
|
337 | 343 |
|
338 | 344 | // don't bother scheduling timeouts if channel became invalid
|
|
0 commit comments