remove timer

This commit is contained in:
Toshit Chawda 2024-09-15 14:26:02 -07:00
parent 06cc16c692
commit 12a95658b9
No known key found for this signature in database
GPG key ID: 91480ED99E2B3D9D
3 changed files with 21 additions and 57 deletions

31
Cargo.lock generated
View file

@ -651,7 +651,7 @@ dependencies = [
"rustls-pemfile", "rustls-pemfile",
"rustls-pki-types", "rustls-pki-types",
"rustls-webpki", "rustls-webpki",
"send_wrapper 0.6.0", "send_wrapper",
"thiserror", "thiserror",
"tokio", "tokio",
"wasm-bindgen", "wasm-bindgen",
@ -894,16 +894,6 @@ version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" 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]] [[package]]
name = "futures-util" name = "futures-util"
version = "0.3.30" version = "0.3.30"
@ -951,18 +941,6 @@ version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" 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]] [[package]]
name = "h2" name = "h2"
version = "0.4.6" version = "0.4.6"
@ -1945,12 +1923,6 @@ version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
[[package]]
name = "send_wrapper"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0"
[[package]] [[package]]
name = "send_wrapper" name = "send_wrapper"
version = "0.6.0" version = "0.6.0"
@ -2928,7 +2900,6 @@ dependencies = [
"fastwebsockets", "fastwebsockets",
"flume", "flume",
"futures", "futures",
"futures-timer",
"getrandom", "getrandom",
"nohash-hasher", "nohash-hasher",
"pin-project-lite", "pin-project-lite",

View file

@ -20,7 +20,6 @@ event-listener = "5.3.1"
fastwebsockets = { version = "0.8.0", features = ["unstable-split"], optional = true } fastwebsockets = { version = "0.8.0", features = ["unstable-split"], optional = true }
flume = "0.11.0" flume = "0.11.0"
futures = "0.3.30" futures = "0.3.30"
futures-timer = "3.0.3"
getrandom = { version = "0.2.15", features = ["std"], optional = true } getrandom = { version = "0.2.15", features = ["std"], optional = true }
nohash-hasher = "0.2.0" nohash-hasher = "0.2.0"
pin-project-lite = "0.2.14" pin-project-lite = "0.2.14"
@ -30,7 +29,7 @@ tokio = { version = "1.39.3", optional = true, default-features = false }
default = ["generic_stream", "certificate"] default = ["generic_stream", "certificate"]
fastwebsockets = ["dep:fastwebsockets", "dep:tokio"] fastwebsockets = ["dep:fastwebsockets", "dep:tokio"]
generic_stream = [] generic_stream = []
wasm = ["futures-timer/wasm-bindgen", "getrandom/js"] wasm = ["getrandom/js"]
certificate = ["dep:ed25519", "dep:bitflags", "dep:getrandom"] certificate = ["dep:ed25519", "dep:bitflags", "dep:getrandom"]
[package.metadata.docs.rs] [package.metadata.docs.rs]

View file

@ -21,15 +21,11 @@ pub use crate::{packet::*, stream::*};
use extensions::{udp::UdpProtocolExtension, AnyProtocolExtension, ProtocolExtensionBuilder}; use extensions::{udp::UdpProtocolExtension, AnyProtocolExtension, ProtocolExtensionBuilder};
use flume as mpsc; use flume as mpsc;
use futures::{channel::oneshot, select, Future, FutureExt}; use futures::{channel::oneshot, Future};
use futures_timer::Delay;
use inner::{MuxInner, WsEvent}; use inner::{MuxInner, WsEvent};
use std::{ use std::sync::{
sync::{ atomic::{AtomicBool, Ordering},
atomic::{AtomicBool, Ordering}, Arc,
Arc,
},
time::Duration,
}; };
use ws::{AppendingWebSocketRead, LockedWebSocketWrite}; use ws::{AppendingWebSocketRead, LockedWebSocketWrite};
@ -176,6 +172,7 @@ impl std::error::Error for WispError {}
async fn maybe_wisp_v2<R>( async fn maybe_wisp_v2<R>(
read: &mut R, read: &mut R,
write: &LockedWebSocketWrite, write: &LockedWebSocketWrite,
role: Role,
builders: &mut [Box<dyn ProtocolExtensionBuilder + Sync + Send>], builders: &mut [Box<dyn ProtocolExtensionBuilder + Sync + Send>],
) -> Result<(Vec<AnyProtocolExtension>, Option<ws::Frame<'static>>, bool), WispError> ) -> Result<(Vec<AnyProtocolExtension>, Option<ws::Frame<'static>>, bool), WispError>
where where
@ -186,21 +183,18 @@ where
let mut downgraded = true; let mut downgraded = true;
let extension_ids: Vec<_> = builders.iter().map(|x| x.get_id()).collect(); 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?), let frame = read.wisp_read_frame(write).await?;
_ = Delay::new(Duration::from_secs(5)).fuse() => None let packet = Packet::maybe_parse_info(frame, role, builders)?;
} { if let PacketType::Info(info) = packet.packet_type {
let packet = Packet::maybe_parse_info(frame, Role::Client, builders)?; supported_extensions = info
if let PacketType::Info(info) = packet.packet_type { .extensions
supported_extensions = info .into_iter()
.extensions .filter(|x| extension_ids.contains(&x.get_id()))
.into_iter() .collect();
.filter(|x| extension_ids.contains(&x.get_id())) downgraded = false;
.collect(); } else {
downgraded = false; extra_packet.replace(ws::Frame::from(packet).clone());
} else {
extra_packet.replace(ws::Frame::from(packet).clone());
}
} }
for extension in supported_extensions.iter_mut() { for extension in supported_extensions.iter_mut() {
@ -265,7 +259,7 @@ impl ServerMux {
let (supported_extensions, extra_packet, downgraded) = let (supported_extensions, extra_packet, downgraded) =
if let Some(mut builders) = extension_builders { if let Some(mut builders) = extension_builders {
send_info_packet(&tx, &mut builders).await?; 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 { } else {
(Vec::new(), None, true) (Vec::new(), None, true)
}; };
@ -452,7 +446,7 @@ impl ClientMux {
if let PacketType::Continue(packet) = first_packet.packet_type { if let PacketType::Continue(packet) = first_packet.packet_type {
let (supported_extensions, extra_packet, downgraded) = let (supported_extensions, extra_packet, downgraded) =
if let Some(mut builders) = extension_builders { 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 not downgraded
if !res.2 { if !res.2 {
send_info_packet(&tx, &mut builders).await?; send_info_packet(&tx, &mut builders).await?;