From c430d76534c1eb34823879ec5bd38ee92d9ac9f4 Mon Sep 17 00:00:00 2001 From: ssrlive <30760636+ssrlive@users.noreply.github.com> Date: Mon, 18 Mar 2024 13:12:30 +0800 Subject: [PATCH] tcp timeout option --- src/args.rs | 5 +++++ src/lib.rs | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/args.rs b/src/args.rs index 165bd58..1264fc0 100644 --- a/src/args.rs +++ b/src/args.rs @@ -41,6 +41,10 @@ pub struct Args { #[arg(short, long, value_name = "IP")] pub bypass: Vec, + /// TCP timeout in seconds + #[arg(long, value_name = "seconds", default_value = "600")] + pub tcp_timeout: u64, + /// Verbosity level #[arg(short, long, value_name = "level", value_enum, default_value = "info")] pub verbosity: ArgVerbosity, @@ -57,6 +61,7 @@ impl Default for Args { dns: ArgDns::default(), dns_addr: "8.8.8.8".parse().unwrap(), bypass: vec![], + tcp_timeout: 600, verbosity: ArgVerbosity::Info, } } diff --git a/src/lib.rs b/src/lib.rs index 4b7e1ac..5936440 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -50,7 +50,6 @@ mod virtual_dns; const DNS_PORT: u16 = 53; const MAX_SESSIONS: u64 = 200; -const TCP_TIMEOUT_SEC: u64 = 600; // 10 minutes const UDP_TIMEOUT_SEC: u64 = 10; // 10 seconds static TASK_COUNT: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0); @@ -87,7 +86,7 @@ where let mut ipstack_config = ipstack::IpStackConfig::default(); ipstack_config.mtu(mtu); - ipstack_config.tcp_timeout(std::time::Duration::from_secs(TCP_TIMEOUT_SEC)); + ipstack_config.tcp_timeout(std::time::Duration::from_secs(args.tcp_timeout)); ipstack_config.udp_timeout(std::time::Duration::from_secs(UDP_TIMEOUT_SEC)); let mut ip_stack = ipstack::IpStack::new(ipstack_config, device);