Commit Graph

478 Commits

Author SHA1 Message Date
Dirkjan Ochtman 51685fb760 Upgrade to tokio 1, bytes 1 and rustls 0.19 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 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
Dirkjan Ochtman 17fe82b598 Apply clippy fixes for 1.49 2021-01-01 11:16:05 -08:00
Dirkjan Ochtman 120c8157ae Update futures-* to 0.3.8
Prevents security issues in futures older than 0.3.5.

Specifically RUSTSEC-2020-0059 and RUSTSEC-2020-0060.
2020-12-21 14:22:18 -08:00
Dirkjan Ochtman 3b8730d651 Upgrade to directories-next 2 2020-12-21 14:22:18 -08:00
Dirkjan Ochtman 4935f58b25 Update rand to 0.8 2020-12-21 14:22:18 -08:00
Dirkjan Ochtman f14c915e1f Apply clippy suggestions for Rust 1.48 2020-11-20 14:24:56 -08:00
Dirkjan Ochtman d1e536665b Add some more error conveniences 2020-10-29 10:45:50 -07:00
Dirkjan Ochtman 1bca0f7c2a Switch from err-derive to thiserror
thiserror is easier to use, has fewer dependencies and is more popular.
2020-10-29 10:45:50 -07:00
Dirkjan Ochtman d5b47f601d Unwrap unused results from invalid config values 2020-10-12 12:13:50 -07:00
Dirkjan Ochtman ff086b4a2c Use combinator instead of matches!() 2020-10-11 10:43:10 -07:00
Dirkjan Ochtman 012263be28 Implement miscellaneous clippy (1.47) suggestions 2020-10-11 10:43:10 -07:00
Dirkjan Ochtman 5bb0a32cd4 Use matches!() macro where appropriate 2020-10-11 10:43:10 -07:00
kwantam ee6f7d01f2 pin all crates with rustls as transitive dep
this is necessary for export_keying_material to work;
can be undone once rustls pushes a new version of the crates.
2020-09-29 09:35:14 +02:00
Jean-Christophe BEGUE babb07b079 H3: Wake connection on request finish 2020-07-26 22:39:28 +02:00
Jean-Christophe BEGUE 9594ba7ee3 H3: Refactor shutdown condition in h3 proto 2020-07-26 22:39:28 +02:00
Jean-Christophe BEGUE 9a79718779 H3: Prevent client to start new requests on shutdown 2020-07-26 22:39:28 +02:00
Jean-Christophe BEGUE b851934228 H3: Refactor GoAway mechanism to actually use the id 2020-07-26 22:39:28 +02:00
Jean-Christophe BEGUE 22200ae79e H3: store side information in proto::connection 2020-07-26 22:39:28 +02:00
Jean-Christophe BEGUE 0cdf96e921 H3: GoAway from client 2020-07-26 22:39:28 +02:00
Jean-Christophe BEGUE 878970b833 H3: Clarify connection end return value 2020-07-26 22:39:28 +02:00
Jean-Christophe BEGUE b940a3ae36 H3: tests log level from env 2020-07-26 22:39:28 +02:00
Dirkjan Ochtman 68570e518e Clean up new clippy warnings 2020-07-17 08:17:37 +02:00
Dirkjan Ochtman 5a4d18f837 Upgrade to rustls-0.18 2020-07-05 23:05:33 +02:00
Alexander Jackson 5e62c3ffc2 Fix some broken documentation in quinn-h3
Fix some broken documentation links in quinn-h3 and clear up some ambiguity.
`SendRequest` does not yield a `SendData`, and only the `send_response()`
method on `server::Sender` will return one.
2020-06-30 20:19:27 +02:00
Benjamin Saunders a1e8c56cb0 Update initial salt, retry integrity key/nonce, and versions 2020-06-30 08:57:14 +02:00
Dirkjan Ochtman 5484d37c76 Migrate to directories-next
directories is no longer being maintained and the final released version
causes a dependency conflict (cfg-if, versus tracing).
2020-06-22 14:46:13 +02:00
Jean-Christophe BEGUE b5c8a218ad H3: Name pin projections as required by 0.4.21 2020-06-14 22:17:53 +02:00
Jean-Christophe BEGUE 0c6a27c37a H3: ignore any number of unknown settings 2020-06-14 22:17:53 +02:00
Benjamin Saunders c2c8e12ae6 Style tweak 2020-06-07 14:42:16 +02:00
Benjamin Saunders 563069e18c Signal ALPN/SNI availability during handshake
Allows processing of 0-RTT data sensitive to ALPN/SNI.
2020-06-07 14:42:16 +02:00
Benjamin Saunders 128c1b2a5e Decouple ClientHello data from peer identity
These are determined at different times for incoming connections, so
bundling them together was fairly ugly.
2020-06-07 14:42:16 +02:00
Jean-Christophe BEGUE 4945573fda H3: make the h3 client default port 443 2020-06-05 13:06:07 -07:00
Jean-Christophe BEGUE 448ba9a061 H3: Check request authority for client 2020-06-05 20:32:18 +02:00
Jean-Christophe BEGUE 2444a60220 H3: trace arriving requests 2020-06-05 20:32:18 +02:00
Jean-Christophe BEGUE 94d5de1709 H3: Check authority validity for server
As defined in https://github.com/quicwg/base-drafts/pull/3475/files

and an empty message aborts the commit.
2020-06-05 20:32:18 +02:00
Jean-Christophe BEGUE cf0801c8fd H3: reject request when headers are invalid 2020-06-05 20:32:18 +02:00
Dirkjan Ochtman 73fbb9bdee tracing-subscriber 0.2.5 is required since 77aeb5544 2020-06-04 22:36:09 +02:00
Dirkjan Ochtman 11b678ca4a Fix warnings about must-use value of mem::replace() 2020-06-04 22:36:09 +02:00
dependabot-preview[bot] a141a16e0d Update proptest requirement from 0.9.1 to 0.10.0
Updates the requirements on [proptest](https://github.com/altsysrq/proptest) to permit the latest version.
- [Release notes](https://github.com/altsysrq/proptest/releases)
- [Changelog](https://github.com/AltSysrq/proptest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/altsysrq/proptest/compare/v0.9.1...0.10.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-01 21:20:54 -07:00
Jean-Christophe BEGUE cbbd76ec60 H3: poll for STOP_SENDING 2020-05-29 15:22:26 +02:00
Benjamin Saunders ca689d33d6 Update version numbers for draft 28 2020-05-25 06:22:35 +02:00
Benjamin Saunders d92a567034 Return UnknownStream from Connection::reset for closed/reset streams
Improves consistency with other stream interfaces. H3 logic was
updated to ignore errors to preserve existing behavior, but future
work might want to insert some unwraps there if static correctness
guarantees are available.
2020-05-23 19:08:46 +02:00