From 595af12cb722a2945c00b45e896d830d16dce6f5 Mon Sep 17 00:00:00 2001 From: Toshit Chawda Date: Thu, 21 Mar 2024 18:21:56 -0700 Subject: [PATCH] fix ipv6 udp and wisp-mux 2.0.2 --- Cargo.lock | 2 +- server/src/main.rs | 3 ++- wisp/Cargo.toml | 2 +- wisp/src/fastwebsockets.rs | 2 +- wisp/src/lib.rs | 4 ++-- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0c28555..2df58ab 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2421,7 +2421,7 @@ checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" [[package]] name = "wisp-mux" -version = "2.0.1" +version = "2.0.2" dependencies = [ "async_io_stream", "bytes", diff --git a/server/src/main.rs b/server/src/main.rs index 285945d..33b2815 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -184,7 +184,8 @@ async fn handle_mux(packet: ConnectPacket, mut stream: MuxStream) -> Result { - let udp_socket = UdpSocket::bind("0.0.0.0:0") + let uri = lookup_host(uri).await.map_err(|x| WispError::Other(Box::new(x)))?.next().ok_or(WispError::InvalidUri)?; + let udp_socket = UdpSocket::bind(if uri.is_ipv4() { "0.0.0.0:0" } else { "[::]:0" }) .await .map_err(|x| WispError::Other(Box::new(x)))?; udp_socket diff --git a/wisp/Cargo.toml b/wisp/Cargo.toml index 996c655..2ed2f1b 100644 --- a/wisp/Cargo.toml +++ b/wisp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wisp-mux" -version = "2.0.1" +version = "2.0.2" license = "LGPL-3.0-only" description = "A library for easily creating Wisp servers and clients." homepage = "https://github.com/MercuryWorkshop/epoxy-tls/tree/multiplexed/wisp" diff --git a/wisp/src/fastwebsockets.rs b/wisp/src/fastwebsockets.rs index 98dcc55..cba77d2 100644 --- a/wisp/src/fastwebsockets.rs +++ b/wisp/src/fastwebsockets.rs @@ -8,7 +8,7 @@ impl From for crate::ws::OpCode { fn from(opcode: OpCode) -> Self { use OpCode::*; match opcode { - Continuation => unreachable!(), + Continuation => unreachable!("continuation should never be recieved when using a fragmentcollector"), Text => Self::Text, Binary => Self::Binary, Close => Self::Close, diff --git a/wisp/src/lib.rs b/wisp/src/lib.rs index 9c211d7..f657db3 100644 --- a/wisp/src/lib.rs +++ b/wisp/src/lib.rs @@ -255,7 +255,7 @@ impl ServerMuxInner { } } } - Continue(_) => unreachable!(), + Continue(_) => break Err(WispError::InvalidPacketType), Close(_) => { if let Some(mut stream) = self.stream_map.lock().await.remove(&packet.stream_id) @@ -421,7 +421,7 @@ impl ClientMuxInner { use PacketType::*; match packet.packet_type { - Connect(_) => unreachable!(), + Connect(_) => break Err(WispError::InvalidPacketType), Data(data) => { if let Some(stream) = self.stream_map.lock().await.get(&packet.stream_id) { let _ = stream.stream.unbounded_send(data);