diff --git a/xxl-rpc-core/src/main/java/com/xxl/rpc/core/remoting/net/impl/netty_http/client/NettyHttpClientHandler.java b/xxl-rpc-core/src/main/java/com/xxl/rpc/core/remoting/net/impl/netty_http/client/NettyHttpClientHandler.java index 83caa894..e43ef6b2 100644 --- a/xxl-rpc-core/src/main/java/com/xxl/rpc/core/remoting/net/impl/netty_http/client/NettyHttpClientHandler.java +++ b/xxl-rpc-core/src/main/java/com/xxl/rpc/core/remoting/net/impl/netty_http/client/NettyHttpClientHandler.java @@ -9,11 +9,14 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.handler.codec.http.FullHttpResponse; +import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpResponseStatus; import io.netty.handler.timeout.IdleStateEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.Objects; + /** * netty_http * @@ -40,6 +43,14 @@ protected void channelRead0(ChannelHandlerContext ctx, FullHttpResponse msg) thr throw new XxlRpcException("xxl-rpc response status invalid."); } + HttpHeaders headers = msg.headers(); + String connection = headers.get("connection"); + if (Objects.equals("close", connection)) { + logger.warn(">>>>>>>>>>> xxl-rpc netty_http client received close"); + ctx.close(); + return; + } + // response parse byte[] responseBytes = ByteBufUtil.getBytes(msg.content());