From fd3c85fccdabd734cefbfc9582c24ddc51f7f5e6 Mon Sep 17 00:00:00 2001 From: "(on company time)" <_@_> Date: Mon, 31 Oct 2022 13:11:31 -0500 Subject: [PATCH] :star: add udp_over_tcp server to PTTH_QUIC relay server maybe it'll work --- .../ptth_quic/src/executable_relay_server.rs | 36 ++++++++++++++++--- crates/udp_over_tcp/src/lib.rs | 4 +++ 2 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 crates/udp_over_tcp/src/lib.rs diff --git a/crates/ptth_quic/src/executable_relay_server.rs b/crates/ptth_quic/src/executable_relay_server.rs index ad307dd..7f09e98 100644 --- a/crates/ptth_quic/src/executable_relay_server.rs +++ b/crates/ptth_quic/src/executable_relay_server.rs @@ -22,7 +22,7 @@ pub struct Opt { #[structopt (long)] listen_addr: Option , #[structopt (long)] - tcp_listen_addr: Option , + tcp_listen_port: Option , } pub async fn main (opt: Opt) -> anyhow::Result <()> @@ -115,9 +115,37 @@ pub async fn main (opt: Opt) -> anyhow::Result <()> debug! ("Serving HTTP on {:?}", http_addr); - task_quic_server.await??; - task_http_server.await??; - task_direc_server.await??; + let task_tcp_over_udp_server = if let Some (tcp_listen_port) = opt.tcp_listen_port { + tokio::spawn (async move { + let cfg = udp_over_tcp::server::Config { + tcp_port: tcp_listen_port, + udp_port: listen_addr.port (), + }; + udp_over_tcp::server::main (cfg).await + }) + } + else { + tokio::spawn (async move { + loop { + tokio::time::sleep (Duration::from_secs (3_600)).await; + } + }) + }; + + tokio::select! { + _val = task_quic_server => { + eprintln! ("QUIC relay server exited, exiting"); + }, + _val = task_http_server => { + eprintln! ("HTTP server exited, exiting"); + }, + _val = task_direc_server => { + eprintln! ("PTTH_DIREC server exited, exiting"); + }, + _val = task_tcp_over_udp_server => { + eprintln! ("tcp_over_udp server exited, exiting"); + } + } Ok (()) } diff --git a/crates/udp_over_tcp/src/lib.rs b/crates/udp_over_tcp/src/lib.rs new file mode 100644 index 0000000..e52001c --- /dev/null +++ b/crates/udp_over_tcp/src/lib.rs @@ -0,0 +1,4 @@ +pub mod client; +pub mod server; + +mod loops;