Commit Graph

2355 Commits

Author SHA1 Message Date
Benjamin Saunders 58ac32d055 Rename SERVER_BUSY to CONNECTION_REFUSED 2020-06-30 08:57:14 +02:00
Benjamin Saunders 68922c07ea Draft 29 PTO logic 2020-06-30 08:57:14 +02:00
Benjamin Saunders 8ca2f04bf9 Track in-flight bytes per packet space 2020-06-30 08:57:14 +02:00
Benjamin Saunders 57160897fe Update names to match current pseudocode 2020-06-30 08:57:14 +02:00
Benjamin Saunders f2c4d35535 Clarify read_crypto logic 2020-06-30 08:57:14 +02:00
Benjamin Saunders a1e8c56cb0 Update initial salt, retry integrity key/nonce, and versions 2020-06-30 08:57:14 +02:00
Benjamin Saunders 7e023e3cd8 Document state predicates 2020-06-29 09:16:49 +02:00
Benjamin Saunders df7645047a Test rejection of client connections missing a required certificate 2020-06-29 09:16:49 +02:00
Benjamin Saunders bedcb42863 Detect spurious migrations
Defends against off-path forwarding attacks by sending PATH_CHALLENGE
on the previous path when migrating.
2020-06-29 09:14:58 +02:00
Benjamin Saunders 5d95eef10a Split up poll_transmit
Pull common packet construction logic out into a separate pair of
functions for ease of reuse.
2020-06-29 09:14:58 +02:00
Charles Hall 66f3c04814 add a way to get a static id for a quic connection
Since remote IP addresses can change, it's useful to have an independent
ID for a connection that is always the same.
quinn_proto::ConnectionHandle provides a mechanism for this, but
quinn::Connection has an Arc internally whose internal pointer can be
used as a unique identifier since acquiring the ConnectionHandle would
require locking a mutex.
2020-06-25 22:35:28 +02:00
Charles Hall 73fb027357 expose StreamId information from Send/RecvStream
If nothing else, this should make it easier to track goings-on in
streams in client code since they'll be able to easily distinguish
between streams via StreamId::index().
2020-06-25 22:35:28 +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
dependabot-preview[bot] 541448f79b Update ct-logs requirement from 0.6 to 0.7
Updates the requirements on [ct-logs](https://github.com/ctz/ct-logs) to permit the latest version.
- [Release notes](https://github.com/ctz/ct-logs/releases)
- [Commits](https://github.com/ctz/ct-logs/compare/v/0.6.0...v/0.7.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-21 21:47:49 -07: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 1be312a7cc Replace space accessors with indexing
Improves ergonomics and simplifies borrowing.
2020-06-13 22:14:30 +02:00
Benjamin Saunders 73c779bac7 Update interop endpoints 2020-06-10 14:07:30 -07:00
Benjamin Saunders c2c8e12ae6 Style tweak 2020-06-07 14:42:16 +02:00
Benjamin Saunders dbce6b2a4b Remove unnecessary reexport 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
Benjamin Saunders bfa8782485 Encapsulate coupling of connection driver and Connecting future 2020-06-07 14:42:16 +02:00
Benjamin Saunders 7aa54a7dd3 Separate ECN counters per space 2020-06-06 12:42:08 -07: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 055ed17544 Allow clippy::eval_order_dependence lint 2020-06-04 22:36:09 +02:00
Dirkjan Ochtman e391c5d05b Remove redundant pattern matching 2020-06-04 22:36:09 +02:00
Dirkjan Ochtman 73dd1ee6c2 Implement BitOrAssign instead of AddAssign for Retransmits 2020-06-04 22:36:09 +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
Benjamin Saunders 9c8696b7f5 Ensure version negotiation grease is valid 2020-06-04 10:17:52 +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
Benjamin Saunders 605a5a5f19 Style tweak 2020-06-01 11:52:34 +02:00
Benjamin Saunders 8250afc34f Simplify stream state disposal
We dispose of stream states when a receive stream is fully read or
reset or a send stream's finish or reset is acked. There are no subtle
qualifiers, so we can take immediate unconditional action.
2020-06-01 11:52:34 +02:00
Benjamin Saunders df390ddf07 Remove transport-layer implicit reset on stop
Defers responsibility for closing send streams to the
application. This simplifies the stream lifecycle, because we no
longer need to track whether a stop was observed in a write error and
potentially free stream state after returning one. Fixes a stream
state leak for applications which don't necessarily observe write
errors.
2020-06-01 11:52:34 +02:00
Benjamin Saunders cf7f492631 Clarify method name 2020-06-01 11:52:34 +02:00
Benjamin Saunders 64d357650c Remove obsolete comment 2020-06-01 11:52:34 +02:00
Benjamin Saunders 888b617c16 Decouple incoming STOP_SENDING and outgoing RESET_STREAM handling 2020-06-01 11:52:34 +02:00
Benjamin Saunders 949068138f Factor stop_reason out of SendState 2020-06-01 11:52:34 +02:00
Benjamin Saunders 333c3acb19 Reduce duplication 2020-05-29 16:04:52 +02:00
Benjamin Saunders de44b35393 Additional RangeSet docs 2020-05-29 16:04:52 +02:00
Benjamin Saunders fe10e89409 Return a read error on ordered-after-unordered reads 2020-05-29 16:04:52 +02:00
Benjamin Saunders f5c01d4d8d Insurance against panic on reading a closed stream
This was probably unreachable as we dispose of closed receive streams
immediately after they become such, but if that ever changes we still
don't want to panic.
2020-05-29 16:04:52 +02:00
Benjamin Saunders 39e370e785 Rename Assembler::limit to Assembler::end for clarity 2020-05-29 16:04:52 +02:00
Benjamin Saunders de4323ed24 Proactively deduplicate stream data when using unordered reads
Ensures we don't yield the same data to the application repeatedly,
and only issue flow control credit in response to new data.
2020-05-29 16:04:52 +02:00
Benjamin Saunders bdedc0ab2e Remove unused fine-grained received range tracking 2020-05-29 16:04:52 +02:00