@Override public final NettyOutbound sendFile(Path file, long position, long count) { Objects.requireNonNull(file); if (hasSentHeaders()) { return super.sendFile(file, position, count); } if (!HttpUtil.isTransferEncodingChunked(outboundHttpMessage()) && !HttpUtil.isContentLengthSet( outboundHttpMessage()) && count < Integer.MAX_VALUE) { outboundHttpMessage().headers() .setInt(HttpHeaderNames.CONTENT_LENGTH, (int) count); } else if (!HttpUtil.isContentLengthSet(outboundHttpMessage())) { outboundHttpMessage().headers() .remove(HttpHeaderNames.CONTENT_LENGTH) .remove(HttpHeaderNames.TRANSFER_ENCODING); HttpUtil.setTransferEncodingChunked(outboundHttpMessage(), true); } return super.sendFile(file, position, count); }
@Override public final NettyOutbound sendFile(Path file, long position, long count) { Objects.requireNonNull(file); if (hasSentHeaders()) { return super.sendFile(file, position, count); } if (!HttpUtil.isTransferEncodingChunked(outboundHttpMessage()) && !HttpUtil.isContentLengthSet( outboundHttpMessage()) && count < Integer.MAX_VALUE) { outboundHttpMessage().headers() .setInt(HttpHeaderNames.CONTENT_LENGTH, (int) count); } else if (!HttpUtil.isContentLengthSet(outboundHttpMessage())) { outboundHttpMessage().headers() .remove(HttpHeaderNames.CONTENT_LENGTH) .remove(HttpHeaderNames.TRANSFER_ENCODING); HttpUtil.setTransferEncodingChunked(outboundHttpMessage(), true); } return super.sendFile(file, position, count); }
@Override public Mono<Void> then() { if (hasSentHeaders()) { return Mono.empty(); } return FutureMono.deferFuture(() -> { if (markSentHeaders()) { HttpMessage msg; if (HttpUtil.isContentLengthSet(outboundHttpMessage())) { outboundHttpMessage().headers() .remove(HttpHeaderNames.TRANSFER_ENCODING); if (HttpUtil.getContentLength(outboundHttpMessage(), 0) == 0) { markSentBody(); msg = newFullEmptyBodyMessage(); } else { msg = outboundHttpMessage(); } } else { msg = outboundHttpMessage(); } preSendHeadersAndStatus(); return channel().writeAndFlush(msg); } else { return channel().newSucceededFuture(); } }); }
@Override public Mono<Void> then() { if (hasSentHeaders()) { return Mono.empty(); } return FutureMono.deferFuture(() -> { if (markSentHeaders()) { HttpMessage msg; if (HttpUtil.isContentLengthSet(outboundHttpMessage())) { outboundHttpMessage().headers() .remove(HttpHeaderNames.TRANSFER_ENCODING); if (HttpUtil.getContentLength(outboundHttpMessage(), 0) == 0) { markSentBody(); msg = newFullEmptyBodyMessage(); } else { msg = outboundHttpMessage(); } } else { msg = outboundHttpMessage(); } preSendHeadersAndStatus(); return channel().writeAndFlush(msg); } else { return channel().newSucceededFuture(); } }); }