diff --git a/agent/src/main.rs b/agent/src/main.rs index 837f135..cffe7d0 100644 --- a/agent/src/main.rs +++ b/agent/src/main.rs @@ -53,6 +53,14 @@ async fn main() -> Result<()> { transport.receive_window(quinn::VarInt::from_u32(16 * 1024 * 1024)); transport.stream_receive_window(quinn::VarInt::from_u32(8 * 1024 * 1024)); transport.send_window(64 * 1024); + // 空闲超时:主控端被强杀(非正常 close)时收不到它的 Ping,连接会一直占住 + // 串行 accept,下一个连接要等几十秒才能建立。10s = 20 个 Ping 周期, + // 正常会话(Ping 每 500ms)永不触发,只用来回收死连接。 + transport.max_idle_timeout(Some( + Duration::from_secs(10) + .try_into() + .expect("10s fits in VarInt"), + )); let mut server_config = quinn::ServerConfig::with_single_cert(vec![cert], key.into())?; server_config.transport_config(Arc::new(transport));