quinn-shared-socket 0.0.1

Run a quinn::Endpoint on a UDP socket shared with other consumers.
Documentation

Quinn Shared Socket

Run a quinn::Endpoint on a UDP socket that is shared with other consumers, by adapting virtual-socket's VirtualUdpSocket to quinn::AsyncUdpSocket.

Use case: a single physical UDP listener carries multiple kinds of traffic (QUIC + L4 forwarding + DNS + ...) and you don't want to give quinn exclusive ownership of the socket. Pair this crate with virtual-socket for the inbound demultiplex layer.

Example

use std::sync::Arc;
use quinn_shared_socket::SharedSocket;
use virtual_socket::VirtualUdpSocket;

# async fn run(
#     physical: Arc<tokio::net::UdpSocket>,
#     server_config: quinn::ServerConfig,
# ) -> Result<(), Box<dyn std::error::Error>> {
let virt = VirtualUdpSocket::new(physical);
// ... your router task pushes inbound QUIC datagrams via virt.enqueue_inbound(peer, datagram) ...

let shared = SharedSocket::new(Arc::clone(&virt));
let endpoint = quinn::Endpoint::new_with_abstract_socket(
    quinn::EndpointConfig::default(),
    Some(server_config),
    shared,
    Arc::new(quinn::TokioRuntime),
)?;
# Ok(())
# }

License

Released under the MIT License © 2026 Canmi