mirror of
https://github.com/tun2proxy/tun2proxy.git
synced 2025-04-21 22:39:08 +00:00
tun shutdown issues. (#97)
This commit is contained in:
parent
4ab6f1a9bc
commit
7e7aadb04b
3 changed files with 21 additions and 15 deletions
|
@ -15,7 +15,7 @@ crate-type = ["staticlib", "cdylib", "lib"]
|
|||
[dependencies]
|
||||
async-recursion = "1.0"
|
||||
async-trait = "0.1"
|
||||
base64 = { version = "0.21" }
|
||||
base64 = { version = "0.22" }
|
||||
chrono = "0.4"
|
||||
clap = { version = "4.5", features = ["derive", "wrap_help", "color"] }
|
||||
ctrlc2 = { version = "3.5", features = ["tokio", "termination"] }
|
||||
|
@ -32,7 +32,7 @@ tokio = { version = "1.36", features = ["full"] }
|
|||
tokio-util = "0.7"
|
||||
tproxy-config = { version = "2.0", features = ["log"] }
|
||||
trust-dns-proto = "0.23"
|
||||
tun2 = { version = "1.1", features = ["async"] }
|
||||
tun2 = { version = "1.2", features = ["async"] }
|
||||
udp-stream = { version = "0.0", default-features = false }
|
||||
unicase = "2.7"
|
||||
url = "2.5"
|
||||
|
|
|
@ -5,8 +5,8 @@ async fn main() -> Result<(), BoxError> {
|
|||
dotenvy::dotenv().ok();
|
||||
let args = Args::parse_args();
|
||||
|
||||
// let default = format!("{}={:?}", module_path!(), args.verbosity);
|
||||
let default = format!("{:?}", args.verbosity);
|
||||
// let default = format!("{}={:?},trust_dns_proto=warn", module_path!(), args.verbosity);
|
||||
let default = format!("{:?},trust_dns_proto=warn", args.verbosity);
|
||||
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or(default)).init();
|
||||
|
||||
let shutdown_token = tokio_util::sync::CancellationToken::new();
|
||||
|
|
24
src/lib.rs
24
src/lib.rs
|
@ -222,17 +222,23 @@ async fn handle_tcp_session(
|
|||
let (mut t_rx, mut t_tx) = tokio::io::split(tcp_stack);
|
||||
let (mut s_rx, mut s_tx) = tokio::io::split(server);
|
||||
|
||||
for _ in 0..2 {
|
||||
tokio::select! {
|
||||
_ = tokio::io::copy(&mut t_rx, &mut s_tx) => {
|
||||
s_tx.shutdown().await?;
|
||||
},
|
||||
_ = tokio::io::copy(&mut s_rx, &mut t_tx) => {
|
||||
t_tx.shutdown().await?;
|
||||
},
|
||||
let res = tokio::join!(
|
||||
async move {
|
||||
let r = tokio::io::copy(&mut t_rx, &mut s_tx).await;
|
||||
if let Err(err) = s_tx.shutdown().await {
|
||||
log::trace!("{} s_tx shutdown error {}", session_info, err);
|
||||
}
|
||||
r
|
||||
},
|
||||
async move {
|
||||
let r = tokio::io::copy(&mut s_rx, &mut t_tx).await;
|
||||
if let Err(err) = t_tx.shutdown().await {
|
||||
log::trace!("{} t_tx shutdown error {}", session_info, err);
|
||||
}
|
||||
log::info!("Ending {}", session_info);
|
||||
r
|
||||
},
|
||||
);
|
||||
log::info!("Ending {} with {:?}", session_info, res);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue