You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Breaking: Unified UdpTransport and SharedUdpTransport into a single UdpTransport with UdpHandle pattern. The new design uses a background
receiver task with sharded pending maps for correct concurrent request handling.
Breaking:Transport trait changes:
Renamed target() to peer_addr() for consistency with std
Added register_request(request_id, timeout) for pre-send slot registration
recv() no longer takes a timeout parameter (uses registered deadline)
Request IDs are now allocated from a global counter for process-wide uniqueness,
preventing collisions when multiple transports exist
Added
Configurable retry strategies with backoff support:
RetryStrategy::Fixed - constant delay between retries (default)
RetryStrategy::Exponential - exponential backoff with configurable base and max
RetryStrategy::None - disable retries entirely
UdpTransport::shutdown() for graceful termination of background receiver
ClientBuilder::build_with(&UdpTransport) for convenient shared transport usage
Fixed
Concurrent UDP requests no longer cause false timeouts due to race conditions
in response routing
Memory leak from orphaned pending responses now prevented via periodic cleanup
Removed
SharedUdpTransport and SharedUdpHandle (functionality merged into UdpTransport)