Skip to content

fix: Replace single-slot datagram buffer with FIFO queue to prevent p… - #133

Open
Cyberalle wants to merge 2 commits into
cloudflare:mainfrom
Cyberalle:fix/datagram-queue-buffering
Open

fix: Replace single-slot datagram buffer with FIFO queue to prevent p…#133
Cyberalle wants to merge 2 commits into
cloudflare:mainfrom
Cyberalle:fix/datagram-queue-buffering

Conversation

@Cyberalle

Copy link
Copy Markdown

…acket loss

The original implementation used a "last-write-wins" pattern that stored only the most recent datagram, causing approximately 75% packet loss in relay scenarios with multiple subscribers.

This change:

  • Replaces latest: Option<Datagram> with queue: VecDeque<Datagram>
  • Adds configurable buffer size (MAX_DATAGRAM_BUFFER = 1024)
  • Implements proper multi-reader support using absolute position tracking
  • Each reader maintains consumed_count to track its position independently
  • Buffer overflow drops oldest datagrams while preserving reader positions

This enables proper QUIC datagram relay for real-time media applications where packet throughput is critical.

…acket loss

The original implementation used a "last-write-wins" pattern that stored
only the most recent datagram, causing approximately 75% packet loss in
relay scenarios with multiple subscribers.

This change:
- Replaces `latest: Option<Datagram>` with `queue: VecDeque<Datagram>`
- Adds configurable buffer size (MAX_DATAGRAM_BUFFER = 1024)
- Implements proper multi-reader support using absolute position tracking
- Each reader maintains `consumed_count` to track its position independently
- Buffer overflow drops oldest datagrams while preserving reader positions

This enables proper QUIC datagram relay for real-time media applications
where packet throughput is critical.
- Add debug logging for SUBSCRIBE_OK handling to trace track_alias mapping
- Fix potential deadlock by releasing subscribes lock before acquiring alias_map lock
- Log alias_map state for troubleshooting datagram routing issues
- Convert extension header logging from info to debug level
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants