Skip to content

Commit eab9601

Browse files
dependabot[bot]kixelatedcodex
authored
build(deps): bump the cargo group with 7 updates (#2888)
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Luke Curley <kixelated@gmail.com> Co-authored-by: OpenAI Codex <noreply@openai.com>
1 parent 7b73c43 commit eab9601

7 files changed

Lines changed: 78 additions & 112 deletions

File tree

Cargo.lock

Lines changed: 38 additions & 24 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -116,19 +116,19 @@ moq-vaapi = "0.0.3"
116116
# whole device graph into every one of them.
117117
moq-video = { version = "0.0.17", path = "rs/moq-video", default-features = false }
118118
percent-encoding = "2"
119-
qmux = { version = "0.4.0", default-features = false }
119+
qmux = { version = "0.5.0", default-features = false }
120120
serde = { version = "1", features = ["derive"] }
121121
tokio = "1.48"
122122
web-async = { version = "0.1.5", features = ["tracing"] }
123-
web-transport-iroh = "0.6"
123+
web-transport-iroh = "0.7"
124124
# default-features off so the QUIC crypto provider is chosen by moq-native's
125125
# aws-lc-rs / ring features (mirroring how the quinn dependency is wired).
126-
# 0.2.1 for the `qlog` passthrough feature moq-native's `qlog` forwards to.
127-
web-transport-noq = { version = "0.2.1", default-features = false }
126+
# Keep the `qlog` passthrough feature available for moq-native to forward.
127+
web-transport-noq = { version = "0.3.0", default-features = false }
128128
web-transport-proto = "0.6"
129-
web-transport-quiche = "0.5"
130-
web-transport-quinn = "0.11"
131-
web-transport-trait = "0.3.4"
129+
web-transport-quiche = "0.6"
130+
web-transport-quinn = "0.12"
131+
web-transport-trait = "0.4.0"
132132

133133
[profile.dev]
134134
panic = "abort"

rs/moq-native/src/noq.rs

Lines changed: 10 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -366,28 +366,17 @@ impl NoqClient {
366366
.await?;
367367
tracing::Span::current().record("id", connection.stable_id());
368368

369-
let mut request = web_transport_noq::proto::ConnectRequest::new(url.clone());
370-
for alpn in versions.alpns() {
371-
request = request.with_protocol(alpn.to_string());
372-
}
373-
374369
let session = match url.scheme() {
375-
"https" => web_transport_noq::Session::connect(connection, request)
376-
.await
377-
.map_err(map_client_error)?,
378-
"moqt" | "moql" => {
379-
let handshake = connection
380-
.handshake_data()
381-
.ok_or(Error::MissingHandshake)?
382-
.downcast::<noq::crypto::rustls::HandshakeData>()
383-
.unwrap();
384-
385-
let alpn = handshake.protocol.ok_or(Error::MissingAlpn)?;
386-
let alpn = String::from_utf8(alpn)?;
387-
388-
let response = web_transport_noq::proto::ConnectResponse::OK.with_protocol(alpn);
389-
web_transport_noq::Session::raw(connection, request, response)
370+
"https" => {
371+
let mut request = web_transport_noq::proto::ConnectRequest::new(url.clone());
372+
for alpn in versions.alpns() {
373+
request = request.with_protocol(alpn.to_string());
374+
}
375+
web_transport_noq::Session::connect(connection, request)
376+
.await
377+
.map_err(map_client_error)?
390378
}
379+
"moqt" | "moql" => web_transport_noq::Session::raw(connection),
391380
_ => return Err(Error::UnsupportedScheme(url.scheme().to_string())),
392381
};
393382

@@ -654,22 +643,9 @@ pub(crate) async fn accept(
654643
// this covers opt-in / work-in-progress versions (e.g. moq-lite-06-wip) that are
655644
// deliberately absent from `moq_net::ALPNS`.
656645
alpn if alpns.contains(&alpn) => {
657-
// Raw QUIC carries no in-band request URL like WebTransport's CONNECT, so the TLS
658-
// SNI is the only authority the client can offer, and it's optional. A client dialing
659-
// a bare IP sends no SNI (RFC 6066 forbids IP literals), leaving `host` empty; the
660-
// resulting hostless `moqt://` routes to the root path, exactly like a URL-less stream
661-
// transport. `url()` returns `None` for the raw variant either way.
662-
let host_str = if host.contains(':') {
663-
format!("[{}]", host)
664-
} else {
665-
host.clone()
666-
};
667-
let url = format!("moqt://{}", host_str).parse::<Url>().map_err(Error::BuildUrl)?;
668-
let request = web_transport_noq::proto::ConnectRequest::new(url);
669-
let response = web_transport_noq::proto::ConnectResponse::OK.with_protocol(alpn);
670646
let identity = crate::tls::PeerIdentity::from_any(conn.peer_identity());
671647
// Raw QUIC carries no request URL; the path rides the SETUP.
672-
let session = web_transport_noq::Session::raw(conn, request, response);
648+
let session = web_transport_noq::Session::raw(conn);
673649
Ok((session, None, identity))
674650
}
675651
_ => Err(Error::UnsupportedAlpn(alpn)),

rs/moq-native/src/quinn.rs

Lines changed: 10 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -379,28 +379,17 @@ impl QuinnClient {
379379
.await?;
380380
tracing::Span::current().record("id", connection.stable_id());
381381

382-
let mut request = web_transport_quinn::proto::ConnectRequest::new(url.clone());
383-
for alpn in versions.alpns() {
384-
request = request.with_protocol(alpn.to_string());
385-
}
386-
387382
let session = match url.scheme() {
388-
"https" => web_transport_quinn::Session::connect(connection, request)
389-
.await
390-
.map_err(map_client_error)?,
391-
"moqt" | "moql" => {
392-
let handshake = connection
393-
.handshake_data()
394-
.ok_or(Error::MissingHandshake)?
395-
.downcast::<quinn::crypto::rustls::HandshakeData>()
396-
.unwrap();
397-
398-
let alpn = handshake.protocol.ok_or(Error::MissingAlpn)?;
399-
let alpn = String::from_utf8(alpn)?;
400-
401-
let response = web_transport_quinn::proto::ConnectResponse::OK.with_protocol(alpn);
402-
web_transport_quinn::Session::raw(connection, request, response)
383+
"https" => {
384+
let mut request = web_transport_quinn::proto::ConnectRequest::new(url.clone());
385+
for alpn in versions.alpns() {
386+
request = request.with_protocol(alpn.to_string());
387+
}
388+
web_transport_quinn::Session::connect(connection, request)
389+
.await
390+
.map_err(map_client_error)?
403391
}
392+
"moqt" | "moql" => web_transport_quinn::Session::raw(connection),
404393
_ => return Err(Error::UnsupportedScheme(url.scheme().to_string())),
405394
};
406395

@@ -666,22 +655,9 @@ pub(crate) async fn accept(
666655
// this covers opt-in / work-in-progress versions (e.g. moq-lite-06-wip) that are
667656
// deliberately absent from `moq_net::ALPNS`.
668657
alpn if alpns.contains(&alpn) => {
669-
// Raw QUIC carries no in-band request URL like WebTransport's CONNECT, so the TLS
670-
// SNI is the only authority the client can offer, and it's optional. A client dialing
671-
// a bare IP sends no SNI (RFC 6066 forbids IP literals), leaving `host` empty; the
672-
// resulting hostless `moqt://` routes to the root path, exactly like a URL-less stream
673-
// transport. `url()` returns `None` for the raw variant either way.
674-
let host_str = if host.contains(':') {
675-
format!("[{}]", host)
676-
} else {
677-
host.clone()
678-
};
679-
let url = format!("moqt://{}", host_str).parse::<Url>().map_err(Error::BuildUrl)?;
680-
let request = web_transport_quinn::proto::ConnectRequest::new(url);
681-
let response = web_transport_quinn::proto::ConnectResponse::OK.with_protocol(alpn);
682658
let identity = crate::tls::PeerIdentity::from_any(conn.peer_identity());
683659
// Raw QUIC carries no request URL; the path rides the SETUP.
684-
let session = web_transport_quinn::Session::raw(conn, request, response);
660+
let session = web_transport_quinn::Session::raw(conn);
685661
Ok((session, None, identity))
686662
}
687663
_ => Err(Error::UnsupportedAlpn(alpn)),

rs/moq-native/src/websocket.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
//! a small head start ([`Client::delay`]), so WebSocket only wins when QUIC can't get
66
//! through. Servers accept it on a separate TCP port via [`Listener`].
77
8-
use qmux::tokio_tungstenite;
9-
use qmux::tokio_tungstenite::tungstenite::{self, http};
8+
use qmux::ws::tokio_tungstenite;
9+
use qmux::ws::tokio_tungstenite::tungstenite::{self, http};
1010
use std::collections::HashSet;
1111
use std::sync::{Arc, LazyLock, Mutex};
1212
use std::{net, time};
@@ -188,10 +188,10 @@ pub(crate) async fn connect(
188188
// restricts. qmux also offers the bare ALPNs (`qmux-01`, `qmux-00`,
189189
// `webtransport`) by default so we still interop with relays that only know a
190190
// wire-format version.
191-
let session = qmux::Client::new()
191+
let session = qmux::ws::Client::new()
192192
.with_protocols(alpns.iter().map(|&a| (a, qmux_versions_for(a))))
193193
.with_connector(connector)
194-
.with_keep_alive(qmux::KeepAlive::default()) // 5s ping / 30s deadline, parity with QUIC
194+
.with_keep_alive(qmux::ws::KeepAlive::default()) // 5s ping / 30s deadline, parity with QUIC
195195
.connect(url.as_str())
196196
.await
197197
.map_err(Error::Connect)?;
@@ -202,7 +202,7 @@ pub(crate) async fn connect(
202202
Ok(session)
203203
}
204204

205-
/// The QMux drafts a moq ALPN is allowed to ride on, for `qmux::*::with_protocols`.
205+
/// The QMux drafts a moq ALPN is allowed to ride on, for `qmux::ws::Client::with_protocols`.
206206
///
207207
/// moq-transport-18 and -19 require qmux-01, so we never pair them with qmux-00.
208208
/// This mirrors the policy in `js/net`'s `connect.ts`. Every other ALPN returns
@@ -349,7 +349,7 @@ impl Listener {
349349
.unwrap()
350350
.take()
351351
.expect("successful upgrade selected a protocol");
352-
let upgraded = qmux::ws::Upgraded::new(websocket).with_keep_alive(qmux::KeepAlive::default());
352+
let upgraded = qmux::ws::Upgraded::new(websocket).with_keep_alive(qmux::ws::KeepAlive::default());
353353
let session = match protocol {
354354
Some(protocol) => upgraded.with_alpn(&protocol).accept(),
355355
None => upgraded.accept(),

0 commit comments

Comments
 (0)