Files
NotesAgentic/frontend/src-tauri/tests/fixtures/sandbox_network_probe.rs
T

28 lines
955 B
Rust

//! Standalone native test probe; never shipped or used to launch extensions.
use std::net::{SocketAddr, TcpStream, UdpSocket};
use std::time::Duration;
fn main() {
let args: Vec<_> = std::env::args().collect();
if args.len() != 3 {
std::process::exit(79);
}
let address: SocketAddr = args[2].parse().unwrap();
let result = match args[1].as_str() {
"tcp" => TcpStream::connect_timeout(&address, Duration::from_secs(2)).map(|_| ()),
"udp" => UdpSocket::bind(if address.is_ipv4() {
"0.0.0.0:0"
} else {
"[::]:0"
})
.and_then(|socket| socket.send_to(b"probe", address))
.map(|_| ()),
_ => std::process::exit(79),
};
std::process::exit(match result {
Ok(()) => 0,
Err(error) if error.raw_os_error() == Some(10013) => 77,
Err(error) if error.kind() == std::io::ErrorKind::TimedOut => 80,
Err(_) => 81,
});
}