Commit Graph

901 Commits

Author SHA1 Message Date
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
Benjamin Saunders 2aa8e30a64 Delete dead macro_use 2019-01-02 08:11:00 +01:00
Benjamin Saunders 3e7961ad37 Backwards-compatible IP_TOS sendmsg use
Linux required IP_TOS to be set as an int prior to 2016 kernel commit
e895cdce683161081e3626c4f5a5c55cb72089f8, even though it's a u8 when
read via IP_RECVTOS.
2019-01-02 08:11:00 +01:00
Benjamin Saunders b5dbe2b602 Independently test IPv4, IPv6, and dual-stack connections 2019-01-02 08:11:00 +01:00
Benjamin Saunders d47c8b8430 Don't send to IPv4 addrs on IPv6 sockets
This fixes dual-stack operation on less recent Linux kernels, and
reduces the rate of address conversion to once per connection by
assuming that dual-stack sockets will always yield IPv4-mapped IPv6
addresses.
2019-01-02 08:11:00 +01:00
Benjamin Saunders 15ce3f0be2 Handshake anti-deadlock
Servers may only send at most 3x received data until address
verification is complete, so large handshakes or packet loss may
require the client to send dummy packets.
2019-01-01 13:52:51 +01:00
Benjamin Saunders a1f248ee38 Test dropped server handshake messages 2019-01-01 13:52:51 +01:00
Benjamin Saunders e2bd393a9d Implement handshake anti-amplification 2019-01-01 13:52:51 +01:00
Benjamin Saunders f529a0481f Delete dead code 2019-01-01 13:52:51 +01:00
Benjamin Saunders 652c7559ef Fix congestion blocking ACK-only packets 2019-01-01 13:52:51 +01:00
Benjamin Saunders 7d4055da6d Fix probes being blocked by lack of pending data 2019-01-01 13:52:51 +01:00
Benjamin Saunders 4555aa4bf7 Cosmetic fixes 2019-01-01 13:52:51 +01:00
Benjamin Saunders 4d8260b57e Immediately fail the high-level test on unexpected errors 2018-12-31 10:25:36 +01:00
Benjamin Saunders 4ef0480bbb Signal connection tasks when the driver is lost
This isn't normally expected, but should reduce confusion in corner
cases.
2018-12-31 10:25:36 +01:00
Benjamin Saunders 43d321bdfc Update block-modes to 0.3 2018-12-31 00:29:35 -08:00
Benjamin Saunders b84f22f64f Use test vectors from upstream 2018-12-31 07:03:16 +01:00
dependabot[bot] 2008cb6eca Update orion requirement from 0.11 to 0.12
Updates the requirements on [orion](https://github.com/brycx/orion) to permit the latest version.
- [Release notes](https://github.com/brycx/orion/releases)
- [Commits](https://github.com/brycx/orion/commits/0.12.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-31 07:00:19 +01:00
Benjamin Saunders 4bbe0d825f Delete dead code 2018-12-30 23:03:56 +01:00
Benjamin Saunders 0abbff72a9 Move SocketAddr normalization into Endpoint
This reduces the amount of conversion necessary.
2018-12-30 23:03:56 +01:00
Benjamin Saunders 6f5dd2dc4d Fix Linux IPv4 UDP socket setup 2018-12-30 23:03:56 +01:00
Dirkjan Ochtman af66816f06 Add CI for macOS 2018-12-30 22:26:20 +01:00
Benjamin Saunders 97301a93a4 Extract in-flight statistics struct
This makes it easier to manipulate while borrowing a space.
2018-12-30 21:56:15 +01:00
Benjamin Saunders cf5ec4aff4 Set ALPN ID in interop tool
ngtcp2 unconditionally pretends we negotiated hq-17, which confuses
rustls if we didn't.
2018-12-30 21:56:15 +01:00