2026-03-08 05:40:17 +00:00
|
|
|
#![allow(unused_features)] // 1.96.0-nightly 2026-03-07 bug
|
|
|
|
|
|
2025-09-27 12:05:38 +00:00
|
|
|
use std::sync::atomic::Ordering;
|
2025-03-30 22:59:29 +00:00
|
|
|
|
2025-10-04 03:29:19 +00:00
|
|
|
use tuwunel::{Server, args, restart, runtime};
|
|
|
|
|
use tuwunel_core::{Result, debug_info};
|
2024-07-24 23:01:00 +00:00
|
|
|
|
2025-04-03 00:59:23 +00:00
|
|
|
fn main() -> Result {
|
2025-09-27 12:05:38 +00:00
|
|
|
let args = args::parse();
|
|
|
|
|
let runtime = runtime::new(Some(&args))?;
|
|
|
|
|
let server = Server::new(Some(&args), Some(runtime.handle()))?;
|
2025-04-03 00:59:23 +00:00
|
|
|
|
2025-09-27 12:05:38 +00:00
|
|
|
tuwunel::exec(&server, runtime)?;
|
2024-05-25 20:16:28 +00:00
|
|
|
|
2024-06-16 19:46:32 +00:00
|
|
|
#[cfg(unix)]
|
|
|
|
|
if server.server.restarting.load(Ordering::Acquire) {
|
|
|
|
|
restart::restart();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
debug_info!("Exit");
|
2024-05-09 15:59:08 -07:00
|
|
|
Ok(())
|
|
|
|
|
}
|