diff --git a/src/bin/relay.rs b/src/bin/relay.rs index 77f7390..4cdbd06 100644 --- a/src/bin/relay.rs +++ b/src/bin/relay.rs @@ -69,6 +69,21 @@ async fn handle_udp_send () -> Response status_reply (StatusCode::OK, "ok\n") } +async fn handle_udp_recv () -> Response +{ + use tokio::net::UdpSocket; + + let mut sock = UdpSocket::bind (SocketAddr::from (([0,0,0,0], 4001))).await.unwrap (); + + let mut buffer = vec! [0u8; 4096]; + + let (bytes_received, _addr) = sock.recv_from (&mut buffer [..]).await.unwrap (); + + buffer.truncate (bytes_received); + + status_reply (StatusCode::OK, buffer) +} + async fn handle_all (req: Request , state: Arc ) -> Result , Infallible> { @@ -84,6 +99,9 @@ async fn handle_all (req: Request , state: Arc ) else if uri == "/udp_send" { Ok (handle_udp_send ().await) } + else if uri == "/udp_recv" { + Ok (handle_udp_recv ().await) + } else { Ok (status_reply (StatusCode::OK, "Hi\n")) }