Skip to content

chore: release#23

Merged
eshork merged 1 commit into
mainfrom
release-plz-2026-05-14T05-52-36Z
Jul 12, 2026
Merged

chore: release#23
eshork merged 1 commit into
mainfrom
release-plz-2026-05-14T05-52-36Z

Conversation

@github-actions

@github-actions github-actions Bot commented May 14, 2026

Copy link
Copy Markdown
Contributor

🤖 New release

  • libudx: 1.3.1 -> 1.7.2
  • peeroxide-dht: 1.3.1 -> 1.7.2
  • peeroxide: 1.3.1 -> 1.7.2
  • peeroxide-cli: 0.2.1 -> 0.3.0
Changelog

libudx

1.7.2 - 2026-07-12

Other

  • NAT holepunch hardening + blind-relay server implementation (#27)

Fixed

  • Fixed a process_incoming ordering bug: the relay fast-path (packet forwarding once UdxStream::relay_to is configured) was checked before the firewall-hook gate, permanently starving hook-based 4-tuple address adoption whenever relay_to was pre-wired on both sides of a pairing before either side's first packet arrived. The relay-forwarding check now runs after the firewall-hook gate.

peeroxide-dht

1.7.2 - 2026-07-12

Added

  • (secret-stream) add SecretStream::into_split() for owned read/write halves (#26)

Other

  • NAT holepunch hardening + blind-relay server implementation (#27)

Added

  • BlindRelayServer/BlindRelaySession (blind_relay module): a real blind-relay server implementation. Previously peeroxide only implemented the blind-relay client side; this adds the pairing-table/session-limit/stats engine mirroring Node's blind-relay Server/BlindRelaySession/BlindRelayPair.
  • BlindRelayServerConfig: configurable max_sessions, max_pairings_per_session, pairing_timeout, idle_session_timeout. Node's reference blind-relay has none of these; defaults are generous so a default relay behaves like the unthrottled Node reference in practice.
  • relay_service::run_relay_server: standalone accept-and-bridge entry point wiring BlindRelayServer to real UDX transport (UdxStream::relay_to for blind, packet-level forwarding). Deliberately independent of peeroxide::Swarm.
  • Idle-session-timeout enforcement and stream teardown on unpair/session-close for active pairings (peeroxide-specific hardening; the latter has 1:1 precedent in Node's blind-relay _onclose/_onunpair).
  • hyperdht::alloc_stream_id(): exposes the same stream-id counter used internally by connect_to, for callers (e.g. peeroxide::swarm) that need to allocate a stream id on the same counter as an existing control connection.

Fixed

  • The relay service now self-announces its own identity (hash(public_key)) to the DHT at startup and on a periodic refresh, mirroring Node's Server.listen() (which internally starts an Announcer for the server's own target). Without this, register_server alone only made the relay answer inbound PEER_HANDSHAKE requests locally — nothing told the rest of the network the relay existed, so a Node.js hyperdht client's dht.connect(pubkey) (which resolves candidates via a LOOKUP-style findPeer query for an announced record, not a raw FIND_NODE walk) could never discover it and failed with PEER_NOT_FOUND.
  • RelayStats is now #[non_exhaustive], matching its RelayStatsSnapshot counterpart and the crate's Event/Result visibility policy (VISIBILITY_POLICY.md), so future counter fields can be added without a breaking change.

peeroxide

1.7.2 - 2026-07-12

Other

  • NAT holepunch hardening + blind-relay server implementation (#27)

Fixed

  • Fixed a cross-crate UDX stream-id collision in swarm.rs's create_server_relay_connection: it reused a local_stream_id allocated from peeroxide's own stream-id counter for the blind-relay data stream, but the control connection to the relay (established via peeroxide-dht's connect_to) allocates from a separate counter — both starting at 1 independently, they could collide on the same socket and silently clobber the control channel's UDX demux registration. Now uses the new peeroxide_dht::hyperdht::alloc_stream_id() to allocate from the same counter connect_to uses.

peeroxide-cli

0.3.0 - 2026-07-12

Other

  • NAT holepunch hardening + blind-relay server implementation (#27)

Added

  • New peeroxide relay subcommand: run a standalone blind-relay server (no topic discovery or DHT-node duties beyond serving relay requests).
  • peeroxide node --relay: opt-in courtesy blind-relay alongside normal DHT routing duties. Both surfaces expose --max-sessions/--max-pairings-per-session/session-timeout flags backed by the same peeroxide-dht::relay_service engine.

Changed

  • Updated peeroxide_dht::io::WireCounters construction sites in the deaddrop progress reporter to use the new WireCounters::from_counters(bytes_sent, bytes_received) constructor, replacing struct-literal construction after WireCounters gained #[non_exhaustive] in peeroxide-dht.


This PR was generated with release-plz.

@github-actions github-actions Bot force-pushed the release-plz-2026-05-14T05-52-36Z branch from 1af242f to 717d7d6 Compare July 11, 2026 03:58
@github-actions github-actions Bot force-pushed the release-plz-2026-05-14T05-52-36Z branch from 717d7d6 to 2f44029 Compare July 12, 2026 18:02
@eshork eshork marked this pull request as ready for review July 12, 2026 18:03
@eshork eshork merged commit 733578f into main Jul 12, 2026
10 checks passed
@eshork eshork deleted the release-plz-2026-05-14T05-52-36Z branch July 12, 2026 18:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant