diff --git a/crates/shadowsocks-service/src/local/tun/tcp.rs b/crates/shadowsocks-service/src/local/tun/tcp.rs index 0e07230d..b5b22d9f 100644 --- a/crates/shadowsocks-service/src/local/tun/tcp.rs +++ b/crates/shadowsocks-service/src/local/tun/tcp.rs @@ -357,7 +357,7 @@ impl TcpTun { } // SHUT_WR - if matches!(control.send_state, TcpSocketState::Close) { + if matches!(control.send_state, TcpSocketState::Close) && socket.send_queue() == 0 && control.send_buffer.is_empty() { trace!("closing TCP Write Half, {:?}", socket.state()); // Close the socket. Set to FIN state