diff --git a/proxy-client/src/main/java/org/fengfei/lanproxy/client/ProxyClientContainer.java b/proxy-client/src/main/java/org/fengfei/lanproxy/client/ProxyClientContainer.java index bb94762..c94887e 100644 --- a/proxy-client/src/main/java/org/fengfei/lanproxy/client/ProxyClientContainer.java +++ b/proxy-client/src/main/java/org/fengfei/lanproxy/client/ProxyClientContainer.java @@ -84,7 +84,7 @@ public class ProxyClientContainer implements Container, ChannelStatusListener { } ch.pipeline().addLast(new ProxyMessageDecoder(MAX_FRAME_LENGTH, LENGTH_FIELD_OFFSET, LENGTH_FIELD_LENGTH, LENGTH_ADJUSTMENT, INITIAL_BYTES_TO_STRIP)); ch.pipeline().addLast(new ProxyMessageEncoder()); - ch.pipeline().addLast(new IdleCheckHandler(IdleCheckHandler.READ_IDLE_TIME, IdleCheckHandler.WRITE_IDLE_TIME, 0)); + ch.pipeline().addLast(new IdleCheckHandler(IdleCheckHandler.READ_IDLE_TIME, IdleCheckHandler.WRITE_IDLE_TIME - 10, 0)); ch.pipeline().addLast(new ClientChannelHandler(realServerBootstrap, bootstrap, ProxyClientContainer.this)); } }); diff --git a/proxy-protocol/src/main/java/org/fengfei/lanproxy/protocol/IdleCheckHandler.java b/proxy-protocol/src/main/java/org/fengfei/lanproxy/protocol/IdleCheckHandler.java index de3e45d..f1417a0 100644 --- a/proxy-protocol/src/main/java/org/fengfei/lanproxy/protocol/IdleCheckHandler.java +++ b/proxy-protocol/src/main/java/org/fengfei/lanproxy/protocol/IdleCheckHandler.java @@ -30,11 +30,6 @@ public class IdleCheckHandler extends IdleStateHandler { @Override protected void channelIdle(ChannelHandlerContext ctx, IdleStateEvent evt) throws Exception { - // 正在使用中的连接不处理 - if (ctx.channel().attr(Constants.NEXT_CHANNEL) != null) { - return; - } - if (IdleStateEvent.FIRST_WRITER_IDLE_STATE_EVENT == evt) { logger.debug("channel write timeout {}", ctx.channel()); ProxyMessage proxyMessage = new ProxyMessage(); diff --git a/proxy-server/src/main/java/org/fengfei/lanproxy/server/ProxyServerContainer.java b/proxy-server/src/main/java/org/fengfei/lanproxy/server/ProxyServerContainer.java index 83c7b7f..6a9c8c5 100644 --- a/proxy-server/src/main/java/org/fengfei/lanproxy/server/ProxyServerContainer.java +++ b/proxy-server/src/main/java/org/fengfei/lanproxy/server/ProxyServerContainer.java @@ -64,19 +64,16 @@ public class ProxyServerContainer implements Container, ConfigChangedListener { @Override public void start() { ServerBootstrap bootstrap = new ServerBootstrap(); - bootstrap.group(serverBossGroup, serverWorkerGroup).channel(NioServerSocketChannel.class) - .childHandler(new ChannelInitializer() { - - @Override - public void initChannel(SocketChannel ch) throws Exception { - ch.pipeline().addLast(new ProxyMessageDecoder(MAX_FRAME_LENGTH, LENGTH_FIELD_OFFSET, - LENGTH_FIELD_LENGTH, LENGTH_ADJUSTMENT, INITIAL_BYTES_TO_STRIP)); - ch.pipeline().addLast(new ProxyMessageEncoder()); - ch.pipeline().addLast(new IdleCheckHandler(IdleCheckHandler.READ_IDLE_TIME, - IdleCheckHandler.WRITE_IDLE_TIME, 0)); - ch.pipeline().addLast(new ServerChannelHandler()); - } - }); + bootstrap.group(serverBossGroup, serverWorkerGroup).channel(NioServerSocketChannel.class).childHandler(new ChannelInitializer() { + + @Override + public void initChannel(SocketChannel ch) throws Exception { + ch.pipeline().addLast(new ProxyMessageDecoder(MAX_FRAME_LENGTH, LENGTH_FIELD_OFFSET, LENGTH_FIELD_LENGTH, LENGTH_ADJUSTMENT, INITIAL_BYTES_TO_STRIP)); + ch.pipeline().addLast(new ProxyMessageEncoder()); + ch.pipeline().addLast(new IdleCheckHandler(IdleCheckHandler.READ_IDLE_TIME, IdleCheckHandler.WRITE_IDLE_TIME, 0)); + ch.pipeline().addLast(new ServerChannelHandler()); + } + }); try { bootstrap.bind(ProxyConfig.getInstance().getServerBind(), ProxyConfig.getInstance().getServerPort()).get(); @@ -97,27 +94,23 @@ public class ProxyServerContainer implements Container, ConfigChangedListener { private void initializeSSLTCPTransport(String host, int port, final SSLContext sslContext) { ServerBootstrap b = new ServerBootstrap(); - b.group(serverBossGroup, serverWorkerGroup).channel(NioServerSocketChannel.class) - .childHandler(new ChannelInitializer() { - - @Override - public void initChannel(SocketChannel ch) throws Exception { - ChannelPipeline pipeline = ch.pipeline(); - try { - pipeline.addLast("ssl", createSslHandler(sslContext, - Config.getInstance().getBooleanValue("server.ssl.needsClientAuth", false))); - ch.pipeline().addLast(new ProxyMessageDecoder(MAX_FRAME_LENGTH, LENGTH_FIELD_OFFSET, - LENGTH_FIELD_LENGTH, LENGTH_ADJUSTMENT, INITIAL_BYTES_TO_STRIP)); - ch.pipeline().addLast(new ProxyMessageEncoder()); - ch.pipeline().addLast(new IdleCheckHandler(IdleCheckHandler.READ_IDLE_TIME, - IdleCheckHandler.WRITE_IDLE_TIME, 0)); - ch.pipeline().addLast(new ServerChannelHandler()); - } catch (Throwable th) { - logger.error("Severe error during pipeline creation", th); - throw th; - } - } - }); + b.group(serverBossGroup, serverWorkerGroup).channel(NioServerSocketChannel.class).childHandler(new ChannelInitializer() { + + @Override + public void initChannel(SocketChannel ch) throws Exception { + ChannelPipeline pipeline = ch.pipeline(); + try { + pipeline.addLast("ssl", createSslHandler(sslContext, Config.getInstance().getBooleanValue("server.ssl.needsClientAuth", false))); + ch.pipeline().addLast(new ProxyMessageDecoder(MAX_FRAME_LENGTH, LENGTH_FIELD_OFFSET, LENGTH_FIELD_LENGTH, LENGTH_ADJUSTMENT, INITIAL_BYTES_TO_STRIP)); + ch.pipeline().addLast(new ProxyMessageEncoder()); + ch.pipeline().addLast(new IdleCheckHandler(IdleCheckHandler.READ_IDLE_TIME, IdleCheckHandler.WRITE_IDLE_TIME, 0)); + ch.pipeline().addLast(new ServerChannelHandler()); + } catch (Throwable th) { + logger.error("Severe error during pipeline creation", th); + throw th; + } + } + }); try { // Bind and start to accept incoming connections. @@ -131,16 +124,14 @@ public class ProxyServerContainer implements Container, ConfigChangedListener { private void startUserPort() { ServerBootstrap bootstrap = new ServerBootstrap(); - bootstrap.group(serverBossGroup, serverWorkerGroup).channel(NioServerSocketChannel.class) - .childHandler(new ChannelInitializer() { - - @Override - public void initChannel(SocketChannel ch) throws Exception { - ch.pipeline().addLast(new IdleCheckHandler(IdleCheckHandler.USER_CHANNEL_READ_IDLE_TIME, 0, 0)); - ch.pipeline().addFirst(new BytesMetricsHandler()); - ch.pipeline().addLast(new UserChannelHandler()); - } - }); + bootstrap.group(serverBossGroup, serverWorkerGroup).channel(NioServerSocketChannel.class).childHandler(new ChannelInitializer() { + + @Override + public void initChannel(SocketChannel ch) throws Exception { + ch.pipeline().addFirst(new BytesMetricsHandler()); + ch.pipeline().addLast(new UserChannelHandler()); + } + }); List ports = ProxyConfig.getInstance().getUserPorts(); for (int port : ports) {