Commit Graph

2620 Commits

Author SHA1 Message Date
Dirkjan Ochtman 5a687e2698 quinn-proto: split up Assembler::read() 2021-01-28 11:46:32 +01:00
Dirkjan Ochtman 08a95136a8 quinn: remove separate read_unordered API 2021-01-28 11:46:32 +01:00
Dirkjan Ochtman 0d5a288983 quinn-proto: yield read data as Chunks 2021-01-28 11:46:32 +01:00
Dirkjan Ochtman 7226d8784a quinn-proto: use struct to yield data from assembler 2021-01-28 11:46:32 +01:00
Dirkjan Ochtman 51a11703ce quinn-proto: rename assembler::Chunk to Buffer 2021-01-28 11:46:31 +01:00
Dirkjan Ochtman ca692c233d quinn-proto: unify API for ordered and unordered reads 2021-01-28 11:46:31 +01:00
Dirkjan Ochtman c7c72924f8 quinn-proto: unify ordered and unordered read paths in assembler 2021-01-28 11:46:31 +01:00
Dirkjan Ochtman f4ad3676e3 quinn-proto: move post_read() logic into Retransmits 2021-01-28 11:46:31 +01:00
Dirkjan Ochtman d64839c1f0 quinn-proto: merge add_read_credits() into post_read() 2021-01-28 11:46:31 +01:00
Dirkjan Ochtman c439449f4a quinn-proto: simplify ShouldTransmit interface 2021-01-28 11:46:31 +01:00
Dirkjan Ochtman 85e9460ad1 quinn-proto: move ShouldTransmit into streams module 2021-01-28 11:46:31 +01:00
Dirkjan Ochtman cf4bb600c0 quinn-proto: add missing defragmented decrement 2021-01-28 10:31:23 +01:00
Timon 41171ee6a6 (2) Quinn Introduction Chapter, Connection Setup Page (#921)
Co-authored-by: Dirkjan Ochtman <dirkjan@ochtman.nl>
2021-01-28 10:18:20 +01:00
est31 29d37aa6d8 Don't assume representation of SocketAddr 2021-01-28 09:53:42 +01:00
est31 f3d82d79a6 Don't assume representation of Ipv*Addr types
Also, remove two uses of unsafe :)
2021-01-28 09:53:42 +01:00
Benjamin Saunders 612c9ac2b8 Remove unnecessary dropping in client/server examples 2021-01-26 06:46:32 +01:00
Benjamin Saunders 03de1d0374 Ensure graceful close in client example 2021-01-26 06:46:32 +01:00
Dirkjan Ochtman 7b7bab6b72 Add note about MSRV policy 2021-01-25 13:45:57 -08:00
Dirkjan Ochtman 0a07eaba20 quinn-proto: let Assembler take responsibility for reads from stopped streams 2021-01-25 13:27:52 -08:00
Dirkjan Ochtman f569495b71 quinn-proto: rename read_chunk() to read() 2021-01-25 13:27:52 -08:00
Dirkjan Ochtman ab98859756 quinn-proto: remove read() methods in favor of read_chunk() 2021-01-25 13:27:52 -08:00
Dirkjan Ochtman f2d01fb2ad quinn-proto: check for stopped assembler before reading data
I'm guessing these were missed when these new methods were added,
and it seems like they do present a bit of a layering violation.
2021-01-25 13:27:52 -08:00
Dirkjan Ochtman 7947ad5854 quinn-proto: split connection::streams::types into send and recv modules 2021-01-25 13:27:52 -08:00
Dirkjan Ochtman 6ce0ef2542 quinn-proto: split streams module up 2021-01-25 13:27:52 -08:00
Dirkjan Ochtman 6e9db53d14 quinn-proto: rename Assembler::read_chunk() to read() 2021-01-25 13:27:52 -08:00
Dirkjan Ochtman 6a58b3f542 quinn: remove unused field RecvStream::any_data_read 2021-01-25 13:27:52 -08:00
Dirkjan Ochtman 0439ec5298 quinn-proto: remove slice-based read API from Assembler 2021-01-25 13:27:52 -08:00
Dirkjan Ochtman 0654eb254e Forward max_length argument from high-level API 2021-01-25 13:27:52 -08:00
Dirkjan Ochtman ce67167968 quinn-proto: add max_length argument to Assembler::read_chunk() 2021-01-25 13:27:52 -08:00
Dirkjan Ochtman 72e0f9aa5a quinn-proto: read crypto stream as bytes 2021-01-25 13:27:52 -08:00
Dirkjan Ochtman 2f0dc868d7 Drop periods from bullet list sentence fragments 2021-01-25 01:08:02 -08:00
Dirkjan Ochtman 5bedbbf666 Set up MSRV in CI (fixes #979) 2021-01-25 01:08:02 -08:00
Dirkjan Ochtman ac029a55d9 Fix compatibility with MSRV 2021-01-25 01:08:02 -08:00
Dirkjan Ochtman 51685fb760 Upgrade to tokio 1, bytes 1 and rustls 0.19 2021-01-25 08:53:00 +01:00
Dirkjan Ochtman 22fa31d571 quinn: move UdpExt functionality into platform-specific UdpSocket types 2021-01-25 08:53:00 +01:00
Dirkjan Ochtman 3dddfca8ff Simplify error propagation for ReadExact 2021-01-25 08:53:00 +01:00
Dirkjan Ochtman 395dff32be Simplify interface for scan_ack_blocks() 2021-01-25 08:53:00 +01:00
Dirkjan Ochtman 0dd5537e25 quinn-h3: change 4-tuple to a struct 2021-01-25 08:53:00 +01:00
Dirkjan Ochtman 889d2b3e03 quinn-h3: improve trace output 2021-01-25 08:53:00 +01:00
Dirkjan Ochtman 6de0b470be quinn-h3: fix typo in example function name 2021-01-25 08:53:00 +01:00
Dirkjan Ochtman 6bbea44fb5 quinn-h3: reduce rightward drift in RecvUni Future impl 2021-01-25 08:53:00 +01:00
Dirkjan Ochtman 661884f1ca quinn-h3: enable client-side key logging in tests 2021-01-25 08:53:00 +01:00
Dirkjan Ochtman 48a3213f74 quinn-h3: copy tracing subscriber setup from quinn 2021-01-25 08:53:00 +01:00
Dirkjan Ochtman ea81e654da quinn-h3: clarify error message for closed control stream 2021-01-25 08:53:00 +01:00
Benjamin Saunders 01b55384eb Increase stream concurrency limits to suit new semantics 2021-01-22 11:39:00 -08:00
Benjamin Saunders 1e5a538221 Limit concurrent streams rather than accept queue size
Previously, we limited the number of streams that could be opened by
the peer but not `accept`ed by the application. However, to guarantee
bounded resource use, applications will typically want to limit the
number of streams they process concurrently. While this could
be *approximately* implemented at the application layer by controlling
calls to accept, that approach has a significant drawback: If streams
are slow to process, the worst-case per-stream latency observed by a
peer who opens the maximum number of streams can be arbitrarily bad,
because streams may be opened above the limit the local application is
willing to process. Reducing the number of unaccepted streams
tolerated can reduce the proportion of streams affected, but reducing
it too low will increase the number of round trips required to open
any given number of streams, increasing average latency significantly.

As a side benefit, this reduces the effort needed for applications to
limit concurrency to a fixed quantity, which is expected to be the
overwhelmingly common case. Should a use case for dynamic concurrency
limits arise, we can expose a setter.
2021-01-22 11:39:00 -08:00
Benjamin Saunders f4b3fc15ef Copy default flow control parameters into Streams
Saves passing TransportParameters in all over the place.
2021-01-22 11:39:00 -08:00
Benjamin Saunders 58840bed5c Cosmetic tweak 2021-01-22 11:39:00 -08:00
Benjamin Saunders fe0adf7d4a Reset send_streams counter when 0-RTT is rejected 2021-01-22 11:39:00 -08:00
Benjamin Saunders a37efdaa82 Centralize connection state updates due to stream state discard 2021-01-22 11:39:00 -08:00