## Description
Align the windows CI tests with the rest of the build env so we avoid
sproadic config issues against fips.
## Breaking Changes
<!-- Optional, if there are any breaking changes document them,
including how to migrate older code. -->
## Notes & open questions
<!-- Any notes, remarks or open questions you have to make about the PR.
-->
## Description
<!-- A summary of what this pull request achieves and a rough list of
changes. -->
## Breaking Changes
<!-- Optional, if there are any breaking changes document them,
including how to migrate older code. -->
## Notes & open questions
<!-- Any notes, remarks or open questions you have to make about the PR.
-->
## Description
we need to take into account path challenges for remotes other than
received ones when stopping the challenge lost timer
## Breaking Changes
n/a
## Notes & open questions
n/a
## Description
Moves logic about receiving path response to the path state. This helps
simplify the connection logic and have a better separation of concerns
**technically this also fixes a bug where we send multiple path open
events**
## Breaking Changes
n/a
## Notes & open questions
n/a
## Description
We can't assume that opening a path to a remote address is going to be
valid if we have another path to the same remote that is valid, because
they might be different four-tuples underneath.
The bug was found by a proptest in CI, that I added as a regression test
with a comment.
This should also be fixed "fully" by tracking the proper four-tuple, but
that's a bigger refactor (that I'm working on in parallel).
I'm opening this to prevent any PRs getting blocked by CI failing due to
this bug (and the proptest finding it again).
* fix(proto): Never use `self.close` from within quinn-proto, to ensure errors are returned from `poll`
* Use `Connection::poll` instead of accessing `.state().take_error()`
* Don't allow closing the last path, if no other *validated* path exists.
Closes#244
* Add yet another regression test, also fix a typo in random_interaction
* Set the `PathNotAbandoned` timer to at least the idle timeout
Otherwise it's possible to mistake the connection timing out for a transport error of PATH_ABANDON not being sent.
* `cargo make format`
* Only return a transport error for an unanswered PATH_ABANDON if we still receive data on that path
* Remove unused `PathNotAbandoned` timer
* Rename `PathAbandon` to `ForgetPath` and `drop_path_state` to `forget_path`
* Ignore "last path abandoned by peer" errors
* Apply clippy suggestion
* I guess a follow-up clippy fix? Lol
* Rename "forget" to "discard"
* Store `last_allowed_receive` in `PathState`
* Chnage error message for failing PATH_ABANDON response
* Fix timer name in qlog
* Nit: Better warn message
* Comment suggestion
Co-authored-by: Floris Bruynooghe <flub@n0.computer>
* Fix comment grammar
Co-authored-by: Floris Bruynooghe <flub@n0.computer>
* Add reference to `on_packet_authenticated` in comment
---------
Co-authored-by: Floris Bruynooghe <flub@n0.computer>
* Introduce UnorderedRecvStream newtype and remove unordered flag from recv_chunk
The only way to do unordered reads is now via the UnorderedRecvStream.
UnorderedRecvStream duplicates the API of RecvStream related to stream state
* Fix bench
* Update quinn/src/recv_stream.rs
Co-authored-by: Floris Bruynooghe <flub@n0.computer>
* Update quinn/src/recv_stream.rs
Co-authored-by: Floris Bruynooghe <flub@n0.computer>
* Add links to docs.
* Add doc comment to UnorderedRecvStream.
* Remove IllegalOrderedRead in quinn.
We do not remove ReadableError::IllegalOrderedRead in quinn-proto, since
using the current quinn-proto API you can still get it.
So we need to panic in the (single) place where we convert a ReadableError
to a ReadError.
* Move struct definition closer to impl
---------
Co-authored-by: Floris Bruynooghe <flub@n0.computer>
* ci: Run docs preview, as long as it's a run in the `n0-computer/quinn` repo
* improve docs check
---------
Co-authored-by: Asmir Avdicevic <asmir.avdicevic64@gmail.com>
* Use ArrayRangeSet in SendBuffer
* Implement replace for ArrayRangeSet
* Remove RangeSet
* WIP
* Remove complex op from ArrayRangeSet that is used nowhere
also remove some stray println! from some tests
* Shut up clippy
* fmt
* Replace replace with an iterator and insert.
iter_range does a linear scan, but so do all other ArrayRangeSet ops.
binary search only becomes worth it when it becomes very large. For typical
sizes linear scan is perfectly fine!
* fmt
* Put back the former println! statements as info!
* Remove common_set_tests macro
we only have one range set now!
* Add proptests for assembler
Also fix a bug in the assembler when going to unordered state after reading
data, and add a regression test for that case.
* Increase ops before we switch to unordered
Otherwise this test mostly tests unordered mode!
* Update quinn-proto/src/connection/assembler.rs
Co-authored-by: Philipp Krüger <philipp.krueger1@gmail.com>
* Add defragment to the prop test ops
only to be used when in ordered mode for some reason 🤷
* fmt
---------
Co-authored-by: Philipp Krüger <philipp.krueger1@gmail.com>