Skip to content

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

Open
Cyberalle wants to merge 2 commits intocloudflare: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 intocloudflare: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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants