Browse Source

refine TUN_QUIT

pull/89/head
ssrlive 2 years ago
parent
commit
5514da71f9
  1. 17
      src/api.rs

17
src/api.rs

@ -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);

Loading…
Cancel
Save