deps: update iroh and moq#41
Open
Frando wants to merge 8 commits into
Open
Conversation
The relay builds its own iroh endpoint to use a stable secret key, then hands it to moq_native via with_iroh. ALPNs are fixed at bind time, so with_iroh cannot add them: the endpoint rejected every iroh-native MoQ client with "peer doesn't support any known protocol" (error 120), breaking the browser-to-CLI and CLI-to-browser bridge e2e tests. Register the same ALPN set that moq_native::iroh::EndpointConfig::bind uses: every MoQ-lite/IETF version plus the WebTransport-over-HTTP/3 ALPN.
Gate the `codec` import in publish.rs so it is not flagged as unused when the crate builds without any codec features. Add a `reason` to the two `allow(dead_code)` attributes that were missing one.
Replace the hand-rolled CatalogProducer, CatalogConsumer, and Catalog with moq-mux's generic catalog stack. The chat and user sections become an IrohLiveExt extension and the catalog is now Catalog<IrohLiveExt>, published and consumed through moq_mux::catalog::Producer/Consumer. This routes catalog publishing through moq-json (one snapshot per group today, with merge-patch deltas available when upstream enables them), removes the snapshot-dropping race in the old hand-rolled select! loop, and extends hang's catalog through the documented serde flatten / CatalogExt pattern so new hang sections deserialize automatically instead of being dropped by an inlined copy.
moq-lite-04 is the current wire version. It carries real origin ids in announce hop chains and supports AnnounceInterest.exclude_hop for sender-side loop suppression, where lite-03 sent anonymous UNKNOWN placeholders and relied on receiver-side checks. Peers and the relay already negotiate lite-04. No backward compatibility with lite-03-only peers is retained.
Create the node's Origin once in Moq::new and thread it through the actor, protocol handler, and MoqSession::connect/session_connect/session_accept, rather than minting a fresh Origin::random() in every session. This matches the per-node identity relays use: the id is stable across every session the node opens or accepts, so announce hop chains attribute broadcasts to one consistent node identity for loop detection and shortest-path routing.
Drop the commented-out hang::container::Frame -> MediaPacket impl and the now unused EncodedFrame::to_hang_frame method. The transport layer builds moq_mux::container::Frame directly, so neither conversion has any callers.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This updates iroh to 1.0, all iroh-related crates to the latest version, and all moq/hang crates to the latest released versions. We no longer need git dependencies on moq crates.