Commit Graph

923 Commits

Author SHA1 Message Date
Benjamin Saunders 08a3201b9d Generate test certificates on demand 2019-01-10 06:48:20 +01:00
Benjamin Saunders 576613a222 Remove built-in support for disabling certificate verification
This can already be done by constructing a `ClientConfig` manually,
and probably shouldn't be made too convenient.
2019-01-10 06:48:20 +01:00
Benjamin Saunders 2ef675188e Support certificate transparency by default 2019-01-10 06:48:20 +01:00
Benjamin Saunders 117b556243 Expand certificate API 2019-01-10 06:48:20 +01:00
Benjamin Saunders 6615366afe Prettier client status output 2019-01-10 06:48:20 +01:00
Benjamin Saunders 7965ed4449 Remove some unused dependencies 2019-01-10 06:48:20 +01:00
Dirkjan Ochtman 25306db57f Update deprecated Handle instantiation method name 2019-01-09 18:08:19 -08:00
Benjamin Saunders 6ad9daddeb Handle invalid and legitimately empty initial DCIDs 2019-01-09 04:58:19 +01:00
Benjamin Saunders d52357eb5a Remove unnecessary alloc/copy 2019-01-09 04:58:19 +01:00
Benjamin Saunders cf49a002e9 Improve config documentation
Idle timeout limit was removed.
2019-01-09 04:58:19 +01:00
Benjamin Saunders 725d1c190c Fix off-by-one stateless reset size threshold
This wasn't fully updated to draft 17, wherein the first byte is
counted as part of the padding.
2019-01-09 04:58:19 +01:00
Benjamin Saunders 2f16dc7a96 Don't route long-header packets based on remote
Fixes use of multiple connections from the same remote.
2019-01-09 04:58:19 +01:00
Benjamin Saunders a996271090 Route packets to issued CIDs 2019-01-09 04:58:19 +01:00
Benjamin Saunders 9c847c2bff Add tuning note to Config 2019-01-08 08:21:10 +01:00
Benjamin Saunders 6bf6b462ee Permit incoming streams by default
This should reduce the odds of new user confusion at little cost.
2019-01-08 08:21:10 +01:00
Benjamin Saunders 2d8f87d1fa Implement dynamic stream ID flow control
This allows applications to easily handle arbitrary numbers of streams
concurrently with predictable resource use.
2019-01-08 08:21:10 +01:00
Benjamin Saunders 8cd2564f8e Improve high-level test debuggability 2019-01-08 08:21:10 +01:00
Benjamin Saunders e8347a34ee Rename Config::max_remote_streams_* to stream_window_* 2019-01-08 08:21:10 +01:00
Benjamin Saunders c9d8f49704 Extract remotely initiated stream allocation method 2019-01-08 08:21:10 +01:00
Benjamin Saunders d11dfb6206 Validate handshake source CIDs against a consistent reference
rem_cid is subject to change, e.g. if a migration is initiated while
handshake packets are still in flight.
2019-01-07 06:52:00 +01:00
Benjamin Saunders 170759319d Use a consistent source CID for Initial/Handshake
A peer might retire CID 0 while there are still handshake packets in
flight, but that CID must still be used as the source if we want them
not to be dropped.
2019-01-07 06:52:00 +01:00
Benjamin Saunders 9e57ba0e08 Tweak diagnostics 2019-01-07 06:52:00 +01:00
Benjamin Saunders d85ce6b7e4 Fix path validation timer 2019-01-07 06:52:00 +01:00
Benjamin Saunders 60f592b926 Correct lost_packets accounting, strengthen coalesced packet test 2019-01-07 06:52:00 +01:00
est31 916546ff8c Use libc from crates.io
The git commit that libc had been pinned
to earlier has been part of a release since.
2019-01-06 17:40:58 +01:00
Benjamin Saunders c9f0a23c2a Handle path validation probes 2019-01-05 23:24:30 -08:00
Benjamin Saunders ed35d048e6 Remove Event::NewSessionTicket
This is handled adequately by rustls by default, and rustls's
extension points are exposed if anyone really wants to e.g. use a
persistent cache.
2019-01-05 23:24:30 -08:00
Benjamin Saunders 86d5a3cd33 Remove non-retransmittable data from Retransmits 2019-01-05 23:24:30 -08:00
Benjamin Saunders 4dcff18d4f Reset congestion/rtt state when migrating 2019-01-05 23:24:30 -08:00
Benjamin Saunders 092eae3666 Implement client address migration 2019-01-05 23:24:30 -08:00
Benjamin Saunders 74a6bc032c Reduce duplication in timer cancellation handling 2019-01-05 23:24:30 -08:00
Benjamin Saunders 0c2006b982 Tweak diagnostics 2019-01-05 23:24:30 -08:00
Benjamin Saunders a213eeaf1f Test key update in interop tool 2019-01-06 07:56:09 +01:00
Benjamin Saunders 32b6dddaf4 Fix handling of early packet spaces after key update
Handshake and Initial packets do not have a key phase, so the key
phase test should always be ignored for them.
2019-01-06 07:56:09 +01:00
Benjamin Saunders cbac404529 Mark resumption as working 2019-01-06 07:56:09 +01:00
Benjamin Saunders 31edd6c734 Test resumption in interop tool
We can infer whether the session was resumed based on whether we saw
the server's certificate.
2019-01-06 07:56:09 +01:00
Benjamin Saunders 05668af7b4 Fix IO polling panic when draining begins after IO is queued
If we closed the connection, then received a packet from the peer that
did not contain a CONNECTION_CLOSE, followed by one that did, we would
enter the Draining state with io.close = true, causing us to try to
send a CONNECTION_CLOSE packet after having forgotten the close
reason.
2019-01-05 06:14:24 +01:00
Benjamin Saunders beaedb541b Fix malformed resumption handshake 2019-01-05 06:14:24 +01:00
Benjamin Saunders ce514af89a Don't pad anti-deadlock packets
If the client manages to get a Handshake packet through to the server,
its address will be verified and anti-amplification budget becomes
irrelevant.
2019-01-04 11:46:44 +01:00
Benjamin Saunders f94f0ec6a8 Ensure a closed or reset connection cancels its timers
Fixes a panic in the higher level.
2019-01-04 11:46:44 +01:00
Benjamin Saunders 24a7ef311e Fix ChaCha20 header protection 2019-01-04 11:46:44 +01:00
Benjamin Saunders 8a1c61abeb Tweak diagnostics 2019-01-04 11:46:44 +01:00
Benjamin Saunders 08e057ec39 Test handling of coalesced packets 2019-01-04 11:46:44 +01:00
Benjamin Saunders 7338f7b1e4 Fix panic on receiving 0-RTT headers 2019-01-04 11:46:44 +01:00
Benjamin Saunders 60bf13acff Mark client Initial authenticated before processing for consistency 2019-01-04 11:46:44 +01:00
Benjamin Saunders eef1ba31f7 Improve unsafe code defensiveness 2019-01-04 11:46:44 +01:00
Benjamin Saunders 58dd5daade Fix feature-gated type reference 2019-01-04 01:22:55 -08:00
Benjamin Saunders 07384a920e Add missing documentation 2019-01-04 01:22:55 -08:00
Benjamin Saunders 37c664ec0a Fix copy-paste error 2019-01-04 01:22:55 -08:00
Benjamin Saunders 32b4ed7c8e Hide rustls certificate types and parsing methods
This decouples an important part of the API from rustls, and greatly
simplifies the task of robustly reading a certificate from disk.
2019-01-03 23:10:22 -08:00