set content-length header for DefaultFullHttpResponse (#1779)

pull/1782/head
yangxb2010000 4 years ago committed by GitHub
parent c6e2c2d4dc
commit 4a4eb331f8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -112,8 +112,7 @@ public class HttpRequestHandler extends SimpleChannelInboundHandler<FullHttpRequ
response = createResponse(request, HttpResponseStatus.INTERNAL_SERVER_ERROR, "Server error");
}
if (!isFileResponseFinished) {
ctx.write(response);
ChannelFuture future = ctx.writeAndFlush(LastHttpContent.EMPTY_LAST_CONTENT);
ChannelFuture future = writeResponse(ctx, response);
future.addListener(ChannelFutureListener.CLOSE);
//reuse http api response buf
if (isHttpApiResponse && response instanceof DefaultFullHttpResponse) {
@ -130,6 +129,20 @@ public class HttpRequestHandler extends SimpleChannelInboundHandler<FullHttpRequ
}
}
private ChannelFuture writeResponse(ChannelHandlerContext ctx, HttpResponse response) {
// try to add content-length header for DefaultFullHttpResponse
if (!HttpUtil.isTransferEncodingChunked(response)
&& response instanceof DefaultFullHttpResponse) {
response.headers().set(HttpHeaderNames.CONTENT_LENGTH,
((DefaultFullHttpResponse) response).content().readableBytes());
return ctx.writeAndFlush(response);
}
//chunk response
ctx.write(response);
return ctx.writeAndFlush(LastHttpContent.EMPTY_LAST_CONTENT);
}
private HttpResponse readFileFromResource(FullHttpRequest request, String path) throws IOException {
DefaultFullHttpResponse fullResp = null;
InputStream in = null;

Loading…
Cancel
Save