|
|
|
@ -7,16 +7,15 @@ use tokio_util::sync::CancellationToken; |
|
|
|
static TUN_QUIT: Mutex<Option<CancellationToken>> = Mutex::new(None); |
|
|
|
|
|
|
|
pub(crate) fn tun2proxy_internal_run(args: Args, tun_mtu: u16) -> c_int { |
|
|
|
let mut lock = TUN_QUIT.lock().unwrap(); |
|
|
|
if lock.is_some() { |
|
|
|
log::error!("tun2proxy already started"); |
|
|
|
return -1; |
|
|
|
} |
|
|
|
|
|
|
|
let shutdown_token = CancellationToken::new(); |
|
|
|
*lock = Some(shutdown_token.clone()); |
|
|
|
// explicit drop to avoid holding mutex lock while running proxy.
|
|
|
|
drop(lock); |
|
|
|
{ |
|
|
|
let mut lock = TUN_QUIT.lock().unwrap(); |
|
|
|
if lock.is_some() { |
|
|
|
log::error!("tun2proxy already started"); |
|
|
|
return -1; |
|
|
|
} |
|
|
|
*lock = Some(shutdown_token.clone()); |
|
|
|
} |
|
|
|
|
|
|
|
let block = async move { |
|
|
|
log::info!("Proxy {} server: {}", args.proxy.proxy_type, args.proxy.addr); |
|
|
|
|