mirror of
https://github.com/n0-computer/noq.git
synced 2026-09-12 06:20:48 +00:00
269e5e0c38
## Description Adds an API for waiting for the start of the draining period in `Endpoint::wait_all_draining` instead of waiting for draining to have finished with `Endpoint::wait_idle`. This allows dropping the `Endpoint` once all connections became inactive and there is no need to wait for all connections to have drained. This is all motivated by [this paragraph](https://datatracker.ietf.org/doc/html/rfc9000#section-10.2-6) in the QUIC spec: > Endpoints that have some alternative means to ensure that late-arriving packets do not induce a response, such as those that are able to close the UDP socket, MAY end these states earlier to allow for faster resource recovery. Servers that retain an open socket for accepting new connections SHOULD NOT end the closing or draining state early. And finally, we're not replacing `Endpoint::wait_idle` and instead keep it around as some tests require waiting for all `Connection`s to be dropped before proceeding, which is only guaranteed by `wait_idle` and not `wait_all_draining`. ## Breaking Changes - Only an addition: `Endpoint::wait_all_draining` was added. ## Change checklist <!-- Remove any that are not relevant. --> - [x] Self-review. - [x] Documentation updates following the [style guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text), if relevant. - [x] Tests if relevant. - [x] All breaking changes documented.