/** * @deprecated Use {@link HttpUtil#isContentLengthSet(HttpMessage)} instead. */ @Deprecated public static boolean isContentLengthSet(HttpMessage m) { return HttpUtil.isContentLengthSet(m); }
private void setContentLengthForKeepAlive(final FullHttpResponse response) { if (!isContentLengthSet(response)) { setContentLength(response, response.content().writerIndex()); } }
@Override protected void finishAggregation(FullHttpMessage aggregated) throws Exception { // Set the 'Content-Length' header. If one isn't already set. // This is important as HEAD responses will use a 'Content-Length' header which // does not match the actual body, but the number of bytes that would be // transmitted if a GET would have been used. // // See rfc2616 14.13 Content-Length if (!HttpUtil.isContentLengthSet(aggregated)) { aggregated.headers().set( CONTENT_LENGTH, String.valueOf(aggregated.content().readableBytes())); } }
@Override protected void finishAggregation(FullHttpMessage aggregated) throws Exception { if (!HttpUtil.isContentLengthSet(aggregated)) { if (aggregated.content().readableBytes() > 0) { super.finishAggregation(aggregated); } } } });
private void encodeFullResponse(HttpResponse newRes, HttpContent content, List<Object> out) { int existingMessages = out.size(); encodeContent(content, out); if (HttpUtil.isContentLengthSet(newRes)) { // adjust the content-length header int messageSize = 0; for (int i = existingMessages; i < out.size(); i++) { Object item = out.get(i); if (item instanceof HttpContent) { messageSize += ((HttpContent) item).content().readableBytes(); } } HttpUtil.setContentLength(newRes, messageSize); } else { newRes.headers().set(HttpHeaderNames.TRANSFER_ENCODING, HttpHeaderValues.CHUNKED); } }
/** * Keep-alive only works if the client can detect when the message has ended without relying on the connection being * closed. * <p> * <ul> * <li>See <a href="https://tools.ietf.org/html/rfc7230#section-6.3"/></li> * <li>See <a href="https://tools.ietf.org/html/rfc7230#section-3.3.2"/></li> * <li>See <a href="https://tools.ietf.org/html/rfc7230#section-3.3.3"/></li> * </ul> * * @param response The HttpResponse to check * * @return true if the response has a self defined message length. */ private static boolean isSelfDefinedMessageLength(HttpResponse response) { return isContentLengthSet(response) || isTransferEncodingChunked(response) || isMultipart(response) || isInformational(response) || response.status().code() == HttpResponseStatus.NO_CONTENT.code(); }
@Override protected boolean hasBody(HttpResponse response) { if (response.status().code() >= HttpStatus.CONTINUE.getCode() && response.status().code() < HttpStatus.OK.getCode()) { return false; } if (response.status().equals(HttpResponseStatus.NO_CONTENT) || response.status().equals(HttpResponseStatus.NOT_MODIFIED)) { return false; } if (HttpUtil.isTransferEncodingChunked(response)) { return true; } if (HttpUtil.isContentLengthSet(response)) { return HttpUtil.getContentLength(response) > 0; } return true; }
if (!HttpUtil.isContentLengthSet(req)) { req.headers().add(HttpHeaderNames.TRANSFER_ENCODING, HttpHeaderValues.CHUNKED);
if (! HttpUtil.isContentLengthSet(nativeResponse) && ! HttpUtil.isTransferEncodingChunked(nativeResponse)) { nativeResponse.headers().add(HttpHeaderNames.TRANSFER_ENCODING, HttpHeaderValues.CHUNKED);
if (!HttpUtil.isContentLengthSet(out.message) && !HttpUtil.isTransferEncodingChunked(out.message) && canHaveBody(out.message)) { HttpUtil.setKeepAlive(out.message, false);
if (! HttpUtil.isContentLengthSet(nativeResponse) && ! HttpUtil.isTransferEncodingChunked(nativeResponse)) { nativeResponse.headers().add(HttpHeaderNames.TRANSFER_ENCODING, HttpHeaderValues.CHUNKED);
/** * @deprecated Use {@link HttpUtil#isContentLengthSet(HttpMessage)} instead. */ @Deprecated public static boolean isContentLengthSet(HttpMessage m) { return HttpUtil.isContentLengthSet(m); }
/** * @deprecated Use {@link HttpUtil#isContentLengthSet(HttpMessage)} instead. */ @Deprecated public static boolean isContentLengthSet(HttpMessage m) { return HttpUtil.isContentLengthSet(m); }
/** * @deprecated Use {@link HttpUtil#isContentLengthSet(HttpMessage)} instead. */ @Deprecated public static boolean isContentLengthSet(HttpMessage m) { return HttpUtil.isContentLengthSet(m); }
@Override protected void finishAggregation(FullHttpMessage aggregated) throws Exception { if (!HttpUtil.isContentLengthSet(aggregated)) { if (aggregated.content().readableBytes() > 0) { super.finishAggregation(aggregated); } } } });
@Override protected void finishAggregation(FullHttpMessage aggregated) throws Exception { if (!HttpUtil.isContentLengthSet(aggregated)) { if (aggregated.content().readableBytes() > 0) { super.finishAggregation(aggregated); } } } });
private void writeResponse(boolean lastContent) { HttpResponse response = servletResponse.getNettyResponse(); // TODO implement exceptions required by http://tools.ietf.org/html/rfc2616#section-4.4 // 设置content-length头 if (!HttpUtil.isContentLengthSet(response)) { HttpUtil.setContentLength(response, totalLength); } ctx.write(response, ctx.voidPromise()); }
@Override public NettyOutbound sendObject(Publisher<?> dataStream) { if (!HttpUtil.isTransferEncodingChunked(nettyRequest) && !HttpUtil.isContentLengthSet(nettyRequest) && !method().equals(HttpMethod.HEAD) && !hasSentHeaders()) { HttpUtil.setTransferEncodingChunked(nettyRequest, true); } return super.sendObject(dataStream); }
@Override public NettyOutbound sendObject(Publisher<?> dataStream) { if (!HttpUtil.isTransferEncodingChunked(nettyRequest) && !HttpUtil.isContentLengthSet(nettyRequest) && !method().equals(HttpMethod.HEAD) && !hasSentHeaders()) { HttpUtil.setTransferEncodingChunked(nettyRequest, true); } return super.sendObject(dataStream); }
@Override public NettyOutbound sendObject(Publisher<?> dataStream) { if (!HttpUtil.isTransferEncodingChunked(nettyRequest) && !HttpUtil.isContentLengthSet(nettyRequest) && !method().equals(HttpMethod.HEAD) && !hasSentHeaders()) { HttpUtil.setTransferEncodingChunked(nettyRequest, true); } return super.sendObject(dataStream); }