Skip to content

Commit

Permalink
Do not schedule timeout when HTTP/2 full request
Browse files Browse the repository at this point in the history
  • Loading branch information
violetagg committed Jun 20, 2023
1 parent e72ed3c commit 3ffbf0e
Showing 1 changed file with 11 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -632,13 +632,16 @@ else if (channel().pipeline()
@Override
protected void onInboundNext(ChannelHandlerContext ctx, Object msg) {
if (msg instanceof HttpRequest) {
if (readTimeout != null) {
addHandlerFirst(NettyPipeline.ReadTimeoutHandler,
new ReadTimeoutHandler(readTimeout.toMillis(), TimeUnit.MILLISECONDS));
}
if (requestTimeout != null) {
requestTimeoutFuture =
ctx.executor().schedule(new RequestTimeoutTask(ctx), Math.max(requestTimeout.toMillis(), 1), TimeUnit.MILLISECONDS);
boolean isFullHttpRequest = msg instanceof FullHttpRequest;
if (!(isHttp2() && isFullHttpRequest)) {
if (readTimeout != null) {
addHandlerFirst(NettyPipeline.ReadTimeoutHandler,
new ReadTimeoutHandler(readTimeout.toMillis(), TimeUnit.MILLISECONDS));
}
if (requestTimeout != null) {
requestTimeoutFuture =
ctx.executor().schedule(new RequestTimeoutTask(ctx), Math.max(requestTimeout.toMillis(), 1), TimeUnit.MILLISECONDS);
}
}
try {
listener().onStateChange(this, HttpServerState.REQUEST_RECEIVED);
Expand All @@ -648,7 +651,7 @@ protected void onInboundNext(ChannelHandlerContext ctx, Object msg) {
ReferenceCountUtil.release(msg);
return;
}
if (msg instanceof FullHttpRequest) {
if (isFullHttpRequest) {
FullHttpRequest request = (FullHttpRequest) msg;
if (request.content().readableBytes() > 0) {
super.onInboundNext(ctx, msg);
Expand All @@ -657,11 +660,6 @@ protected void onInboundNext(ChannelHandlerContext ctx, Object msg) {
request.release();
}
if (isHttp2()) {
removeHandler(NettyPipeline.ReadTimeoutHandler);
if (requestTimeoutFuture != null) {
requestTimeoutFuture.cancel(false);
requestTimeoutFuture = null;
}
//force auto read to enable more accurate close selection now inbound is done
channel().config().setAutoRead(true);
onInboundComplete();
Expand Down

0 comments on commit 3ffbf0e

Please sign in to comment.