Commit Graph

2620 Commits

Author SHA1 Message Date
Benjamin Saunders 06f0a3e292 Fix stream ID flow control deadlock 2019-10-22 10:10:55 +02:00
Benjamin Saunders 458613e7bb Allow PING at every encryption level
See https://github.com/quicwg/base-drafts/pull/3035
2019-10-16 07:00:34 +02:00
dependabot-preview[bot] 89cd5d06e5 Update webpki-roots requirement from 0.17 to 0.18
Updates the requirements on [webpki-roots](https://github.com/ctz/webpki-roots) to permit the latest version.
- [Release notes](https://github.com/ctz/webpki-roots/releases)
- [Commits](https://github.com/ctz/webpki-roots/compare/v/0.17.0...v/0.18.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-14 07:39:19 +02:00
jean-airoldie 1d59323eb6 Added debug impl to various structs 2019-10-13 11:29:40 +02:00
Benjamin Saunders a0d4b36a17 Fix stream ID leak when stream opening futures are dropped
By deferring allocation of the stream ID until the futures
synchronously completes, we guarantee that either no ID is allocated
or ownership is successfully taken by the Send/RecvStream struct(s).
2019-10-12 08:14:35 -07:00
jean-airoldie 6d069ca8eb Impl Debug for various types
Impl fmt::Debug for
* {Send,Recv}Stream
* ConnectionRef
* ConnectionDriver
2019-10-10 10:12:34 +02:00
Dirkjan Ochtman afc18262af Upgrade to err-derive 0.2 2019-10-09 09:09:54 +02:00
Benjamin Saunders 2aeaa798a3 Remove stray dbg 2019-10-04 18:48:46 -07:00
stammw 2bb13fa6c5 H3: Filter control frame types for client or server 2019-10-04 15:28:42 +02:00
stammw ad4f516f0f H3: Control stream sending mechanism 2019-10-04 15:28:42 +02:00
stammw 90f6ce10d1 H3: Control stream implementation (Settings only) 2019-10-04 15:28:42 +02:00
stammw ca0251640a H3: Make Settings and SettingsFrame the same type 2019-10-04 15:28:42 +02:00
stammw a4e656302b H3: do not poll incoming bi streams in client 2019-10-04 15:28:42 +02:00
stammw 18a95328b9 H3: Poll incoming uni streams from connection 2019-10-04 15:28:42 +02:00
stammw 248ec17f03 H3: incoming UniStream header parsing and polling 2019-10-04 15:28:42 +02:00
Benjamin Saunders e5a7e90f64 Expose 0-RTT handshake completion and success to applications 2019-10-04 09:22:52 +02:00
Benjamin Saunders 34e6e1ca34 Style cleanup 2019-10-04 09:22:52 +02:00
jean-airoldie a3bb2fefa8 Fixed Session::is_handshaking doc 2019-10-04 09:22:07 +02:00
Benjamin Saunders 06556e45fd Fix web trust roots not being enabled by default 2019-10-04 06:15:59 +02:00
Benjamin Saunders 0837b5b51e Implement the unreliable datagram extension 2019-10-03 20:36:49 +02:00
Benjamin Saunders 148bcdff5f Represent stream type range as a RangeInclusive
Improves clarity of edge cases.
2019-10-03 20:36:49 +02:00
Victor Roest 4560e63bab Removed 'Initializer' import and use as it seems to not exist anymore
This was causing compilation issues which are now fixed for me
2019-10-03 12:54:10 +02:00
Benjamin Saunders 2dcb084347 Decouple incoming streams of differing directionalities 2019-09-29 07:38:30 +02:00
Benjamin Saunders 8e1c6b605e Remove ToSocketAddrs from EndpointBuilder::bind
Improves consistency with Endpoint::connect and removes the
possibility of silent blocking should the user pass in a domain
name. The generic API was originally motivated by the convenience of
passing in numeric addresses as strings, but `.parse().unwrap()` is
pretty easy too.
2019-09-29 07:21:06 +02:00
Benjamin Saunders da0c398a0a Remove unnecessary EndpointError cases 2019-09-29 07:20:00 +02:00
Benjamin Saunders 9c4b21d1e8 Refactor interop tool 2019-09-28 10:23:26 +02:00
Benjamin Saunders eef7900280 Run CI on nightly 2019-09-28 10:23:26 +02:00
stammw f5e014dae1 h3: std futures 2019-09-28 10:23:26 +02:00
Benjamin Saunders 82b9455caf Use multithreaded tokio runtime for server example
Illustrates our support for more typical tokio patterns
2019-09-28 10:23:26 +02:00
Benjamin Saunders d07dc907ad Update for async/await 2019-09-28 10:23:26 +02:00
Benjamin Saunders 399aa2f95a Respect congestion control while handshaking
Not sure why we weren't doing this, but as far as I can tell it's
required.
2019-09-25 09:00:35 +02:00
Benjamin Saunders 0dc23afb85 Test tail loss recovery under congestion 2019-09-25 09:00:35 +02:00
Benjamin Saunders c011e239f5 Draft 23 handshake retransmit, data-bearing probes
Modifies our probe strategy to retransmit in-flight data rather than
sending a PING frame. This gives us a chance of accelerated loss
recovery and allows adoption of the new draft's simplified handshake
retransmit logic.
2019-09-25 09:00:35 +02:00
Dirkjan Ochtman 2afe7f597d Update initial salt and QUIC version to draft 23 2019-09-23 12:25:08 -07:00
Benjamin Saunders 03c3013a52 Draft 23 initial_rtt and PTO 2019-09-22 11:52:20 +02:00
Benjamin Saunders 19c7744c88 Less confusing server behavior on empty Initial 2019-09-22 11:52:20 +02:00
Benjamin Saunders bb81d7eac8 Relax RTT update validation per current reliability draft 2019-09-22 11:52:20 +02:00
Benjamin Saunders 0e6e15ec54 Apply transport parameter grease 2019-09-22 11:52:20 +02:00
Benjamin Saunders 1c825640da Add successful ALPN negotiation test 2019-09-19 08:34:35 +02:00
Benjamin Saunders 9cbf6ea936 Use a valid ALPN configuration in 0-RTT rejection test 2019-09-19 08:34:35 +02:00
Benjamin Saunders 148e549e8b NEW_TOKEN from a client is a PROTOCOL_VIOLATION 2019-09-19 08:34:35 +02:00
Benjamin Saunders 3b01662324 Retransmit 0-RTT on receiving Retry
Receipt of a Retry packet indicates that the server will not process
any data until it receives our next Initial, so previously sent 0-RTT
data is almost certainly lost, bar unlikely reordering. Immediately
retransmitting it is therefore a free performance win.
2019-09-19 08:34:35 +02:00
Benjamin Saunders 38666e799c Enable ECN on migration even if we'd previously given up, NATs aside 2019-09-19 08:34:35 +02:00
Benjamin Saunders 60f0d6c7fa Ack Delay must only be used for intentional delays
We currently always attempt to send acknowledgements immediately.
2019-09-19 08:34:35 +02:00
Benjamin Saunders 0efdce97f9 Recover congestion/rtt state after path validation failure 2019-09-19 08:34:35 +02:00
Benjamin Saunders ac2540651f Improve handling of double migration 2019-09-19 08:34:35 +02:00
Benjamin Saunders 26b01e9662 Don't increase the congestion window on unvalidated paths
Improves our compliance with the defenses against peer address
spoofing in the draft.
2019-09-19 08:34:35 +02:00
Benjamin Saunders 4d065b9028 Update comments 2019-09-19 08:34:35 +02:00
Benjamin Saunders acfdb48899 Draft 23 stateless resets 2019-09-18 07:29:34 +02:00
Benjamin Saunders 22895c559e Implement off-path packet forwarding countermeasure 2019-09-18 07:29:34 +02:00