diff --git a/prototypes/quic_demo/src/bin/quic_demo_relay_server.rs b/prototypes/quic_demo/src/bin/quic_demo_relay_server.rs index 9b2dc51..e7be1a3 100644 --- a/prototypes/quic_demo/src/bin/quic_demo_relay_server.rs +++ b/prototypes/quic_demo/src/bin/quic_demo_relay_server.rs @@ -10,6 +10,7 @@ use hyper::{ StatusCode, }; use structopt::StructOpt; +use tokio::sync::watch; use quic_demo::prelude::*; use protocol::PeerId; @@ -56,6 +57,8 @@ async fn main () -> anyhow::Result <()> { let tcp_port = 30382; let tcp_listener = TcpListener::bind (("127.0.0.1", tcp_port)).await?; + let (_running_tx, running_rx) = watch::channel (true); + let task_quic_server = { let relay_state = Arc::clone (&relay_state); tokio::spawn (async move { @@ -89,8 +92,7 @@ async fn main () -> anyhow::Result <()> { let task_tcp_server = { let relay_state = Arc::clone (&relay_state); tokio::spawn (async move { - let running = true; - while running { + while *running_rx.borrow () { let (tcp_socket, _) = tcp_listener.accept ().await?; let relay_state = Arc::clone (&relay_state); diff --git a/prototypes/quic_demo/src/protocol.rs b/prototypes/quic_demo/src/protocol.rs index 9abb0e4..56f05a8 100644 --- a/prototypes/quic_demo/src/protocol.rs +++ b/prototypes/quic_demo/src/protocol.rs @@ -61,7 +61,7 @@ pub async fn p2_connect_to_p5 ( let cmd_type = Command::CONNECT_P2_TO_P4.0; send.write_all (&[cmd_type, 0, 0, 0]).await?; - send_lv_string (&mut send, &server_id).await?; + send_lv_string (&mut send, server_id).await?; expect_exact_response (&mut recv, [Command::OKAY.0, cmd_type, 0, 0]).await .context ("P2 didn't get OK response when asking P3 to connect P2 to P4")?; diff --git a/prototypes/quic_demo/src/quinn_utils.rs b/prototypes/quic_demo/src/quinn_utils.rs index c99effc..2eaba64 100644 --- a/prototypes/quic_demo/src/quinn_utils.rs +++ b/prototypes/quic_demo/src/quinn_utils.rs @@ -58,7 +58,7 @@ pub fn make_server_endpoint(bind_addr: SocketAddr) -> anyhow::Result<(Incoming, fn configure_client(server_certs: &[&[u8]]) -> anyhow::Result { let mut cfg_builder = ClientConfigBuilder::default(); for cert in server_certs { - cfg_builder.add_certificate_authority(Certificate::from_der(&cert)?)?; + cfg_builder.add_certificate_authority(Certificate::from_der(cert)?)?; } Ok(cfg_builder.build()) }