From 12a95658b99421108a6c717f49231d5a3f1f446a Mon Sep 17 00:00:00 2001 From: Toshit Chawda Date: Sun, 15 Sep 2024 14:26:02 -0700 Subject: [PATCH] remove timer --- Cargo.lock | 31 +------------------------------ wisp/Cargo.toml | 3 +-- wisp/src/lib.rs | 44 +++++++++++++++++++------------------------- 3 files changed, 21 insertions(+), 57 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index edfda28..09b78ca 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -651,7 +651,7 @@ dependencies = [ "rustls-pemfile", "rustls-pki-types", "rustls-webpki", - "send_wrapper 0.6.0", + "send_wrapper", "thiserror", "tokio", "wasm-bindgen", @@ -894,16 +894,6 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" -[[package]] -name = "futures-timer" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" -dependencies = [ - "gloo-timers", - "send_wrapper 0.4.0", -] - [[package]] name = "futures-util" version = "0.3.30" @@ -951,18 +941,6 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" -[[package]] -name = "gloo-timers" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", -] - [[package]] name = "h2" version = "0.4.6" @@ -1945,12 +1923,6 @@ version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" -[[package]] -name = "send_wrapper" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" - [[package]] name = "send_wrapper" version = "0.6.0" @@ -2928,7 +2900,6 @@ dependencies = [ "fastwebsockets", "flume", "futures", - "futures-timer", "getrandom", "nohash-hasher", "pin-project-lite", diff --git a/wisp/Cargo.toml b/wisp/Cargo.toml index 8799d75..574a7bb 100644 --- a/wisp/Cargo.toml +++ b/wisp/Cargo.toml @@ -20,7 +20,6 @@ event-listener = "5.3.1" fastwebsockets = { version = "0.8.0", features = ["unstable-split"], optional = true } flume = "0.11.0" futures = "0.3.30" -futures-timer = "3.0.3" getrandom = { version = "0.2.15", features = ["std"], optional = true } nohash-hasher = "0.2.0" pin-project-lite = "0.2.14" @@ -30,7 +29,7 @@ tokio = { version = "1.39.3", optional = true, default-features = false } default = ["generic_stream", "certificate"] fastwebsockets = ["dep:fastwebsockets", "dep:tokio"] generic_stream = [] -wasm = ["futures-timer/wasm-bindgen", "getrandom/js"] +wasm = ["getrandom/js"] certificate = ["dep:ed25519", "dep:bitflags", "dep:getrandom"] [package.metadata.docs.rs] diff --git a/wisp/src/lib.rs b/wisp/src/lib.rs index 0b81008..cf1e2f1 100644 --- a/wisp/src/lib.rs +++ b/wisp/src/lib.rs @@ -21,15 +21,11 @@ pub use crate::{packet::*, stream::*}; use extensions::{udp::UdpProtocolExtension, AnyProtocolExtension, ProtocolExtensionBuilder}; use flume as mpsc; -use futures::{channel::oneshot, select, Future, FutureExt}; -use futures_timer::Delay; +use futures::{channel::oneshot, Future}; use inner::{MuxInner, WsEvent}; -use std::{ - sync::{ - atomic::{AtomicBool, Ordering}, - Arc, - }, - time::Duration, +use std::sync::{ + atomic::{AtomicBool, Ordering}, + Arc, }; use ws::{AppendingWebSocketRead, LockedWebSocketWrite}; @@ -176,6 +172,7 @@ impl std::error::Error for WispError {} async fn maybe_wisp_v2( read: &mut R, write: &LockedWebSocketWrite, + role: Role, builders: &mut [Box], ) -> Result<(Vec, Option>, bool), WispError> where @@ -186,21 +183,18 @@ where let mut downgraded = true; let extension_ids: Vec<_> = builders.iter().map(|x| x.get_id()).collect(); - if let Some(frame) = select! { - x = read.wisp_read_frame(write).fuse() => Some(x?), - _ = Delay::new(Duration::from_secs(5)).fuse() => None - } { - let packet = Packet::maybe_parse_info(frame, Role::Client, builders)?; - if let PacketType::Info(info) = packet.packet_type { - supported_extensions = info - .extensions - .into_iter() - .filter(|x| extension_ids.contains(&x.get_id())) - .collect(); - downgraded = false; - } else { - extra_packet.replace(ws::Frame::from(packet).clone()); - } + + let frame = read.wisp_read_frame(write).await?; + let packet = Packet::maybe_parse_info(frame, role, builders)?; + if let PacketType::Info(info) = packet.packet_type { + supported_extensions = info + .extensions + .into_iter() + .filter(|x| extension_ids.contains(&x.get_id())) + .collect(); + downgraded = false; + } else { + extra_packet.replace(ws::Frame::from(packet).clone()); } for extension in supported_extensions.iter_mut() { @@ -265,7 +259,7 @@ impl ServerMux { let (supported_extensions, extra_packet, downgraded) = if let Some(mut builders) = extension_builders { send_info_packet(&tx, &mut builders).await?; - maybe_wisp_v2(&mut rx, &tx, &mut builders).await? + maybe_wisp_v2(&mut rx, &tx, Role::Server, &mut builders).await? } else { (Vec::new(), None, true) }; @@ -452,7 +446,7 @@ impl ClientMux { if let PacketType::Continue(packet) = first_packet.packet_type { let (supported_extensions, extra_packet, downgraded) = if let Some(mut builders) = extension_builders { - let res = maybe_wisp_v2(&mut rx, &tx, &mut builders).await?; + let res = maybe_wisp_v2(&mut rx, &tx, Role::Client, &mut builders).await?; // if not downgraded if !res.2 { send_info_packet(&tx, &mut builders).await?;