Commit Graph

135 Commits

Author SHA1 Message Date
Benjamin Saunders fb9190a0b6 core: fix 0-RTT send/recv
Not explicitly shutting down TLS connections caused OpenSSL to omit them
from the anti-replay cache, preventing resumption. Additionally, the
wrong header type was being used when sending 0-RTT packes.
2018-05-21 21:49:14 -07:00
Benjamin Saunders a9f9ec614d core: allow ACK-only handshake packets 2018-05-19 11:10:42 -07:00
Benjamin Saunders 5993415434 core: draft 0-RTT transmit support 2018-05-19 10:55:56 -07:00
Benjamin Saunders 7c7f635527 core: draft 0-RTT receive support 2018-05-17 21:47:22 -07:00
Benjamin Saunders 14f33b74be core: remove dead code 2018-05-17 12:43:00 -07:00
Benjamin Saunders 1f1f9463fe core: don't inspect reserved short header bit 2018-05-17 12:38:15 -07:00
Benjamin Saunders e65eaa2ea3 core: clarify some errors 2018-05-17 12:38:01 -07:00
Benjamin Saunders 8ccd95c703 core: don't send MAX_DATA after handshake
This is unnecessary because stream 0 is exempt from connection-level
flow control.
2018-05-17 12:09:04 -07:00
Benjamin Saunders 9f13021841 core: fix server dedup of retransmitted Initial under stateful hs 2018-05-17 02:23:13 -07:00
Benjamin Saunders e6bd7cad9c core: fix incorrect retransmission of ClientHello under high latency
If the ClientHello got retransmitted prematurely and the handshake then
proceeded, the client's Finished packet would contain a unneeded copy of
the ClientHello, and hence be deemed an Initial by the transmit logic,
leading to it being dropped by the server and the handshake stalling.
2018-05-17 01:15:56 -07:00
Benjamin Saunders 5e3e85ab08 core: include TLS alert, if any, in handshake error 2018-05-17 00:55:35 -07:00
Benjamin Saunders b0a3bc8837 core: ensure we don't use later TLS versions inadvertently 2018-05-17 00:25:58 -07:00
Benjamin Saunders 55bf7621a6 core: optional stateless retry 2018-05-16 23:08:07 -07:00
Benjamin Saunders f65a59a22e core: sanity-check NEW_CONNECTION_ID 2018-05-16 22:53:25 -07:00
Benjamin Saunders d76f9e2040 core: tolerate NEW_CONNECTION_ID 2018-05-16 22:47:35 -07:00
Benjamin Saunders 989284511d core: improve handling of unexpected long header packets 2018-05-16 20:41:47 -07:00
Benjamin Saunders 0912edaaf2 core: fix panic on malformed header 2018-05-16 08:55:00 -07:00
Benjamin Saunders f1e7bd4e54 session resumption 2018-05-16 00:23:57 -07:00
Benjamin Saunders 9e3467c0a2 core: fix underflow on recv of already-read stream frame 2018-05-16 00:20:38 -07:00
Benjamin Saunders af50ca0154 core: fix stream ID fencepost error 2018-05-12 23:25:32 -07:00
Benjamin Saunders 6045f79bd6 core: don't ignore handshake completion ACKs
Improves early RTT estimation
2018-05-12 22:35:36 -07:00
Benjamin Saunders 31d35944aa core: fix high-latency handshakes and related bugs
Packets that complete the handshake must be considered implicit
acknowledgement of all outstanding handshake packets, otherwise
retransmitted handshake packets that are not ultimately needed might
never be acknowledged, leading to infinite retransmits until the
congestion window shrinks to unusability.
2018-05-12 16:17:33 -07:00
Benjamin Saunders e40d241c0d core: sni accessor 2018-05-11 00:29:42 -07:00
Benjamin Saunders 1078ce9f76 core: fix inadvertent sending of certificate requests 2018-05-11 00:24:21 -07:00
Benjamin Saunders 91924a7387 Iterate on documentation 2018-05-02 22:09:20 -07:00
Benjamin Saunders 5e8dcc71ee core: fix bad delay in server's first ACK 2018-05-02 19:00:58 -07:00
Benjamin Saunders 9ac732dd86 core: log ACK delay 2018-05-02 18:34:41 -07:00
Benjamin Saunders a0b07ddb7b core: fix client bidi stream limit fencepost 2018-05-02 18:31:39 -07:00
Benjamin Saunders f1862b55fe core: fix panic on long packet with empty payload 2018-05-02 18:31:07 -07:00
Benjamin Saunders 934f681b77 core: unit test for congestion 2018-05-02 18:30:34 -07:00
Benjamin Saunders 5d3aca186f core: fix default cert verification behavior 2018-05-02 18:29:26 -07:00
Benjamin Saunders 6cef002e07 core: more detailed logging 2018-05-01 22:17:43 -07:00
Benjamin Saunders 82016c47a2 core: fix panic composing PNs before receiving ACKs 2018-05-01 20:44:00 -07:00
Benjamin Saunders 08a7c2b9ec api tweaks, larger default windows 2018-05-01 20:43:56 -07:00
Benjamin Saunders f82774a367 core: deliver buffered data even after reset 2018-05-01 19:37:04 -07:00
Benjamin Saunders ace87bbeec core: test and debug stop_sending 2018-05-01 19:32:20 -07:00
Benjamin Saunders 3743b75934 API refactoring, test fixes 2018-04-30 23:55:11 -07:00
Benjamin Saunders 71c9c482fb core: fix panic on stateless reset for short packets 2018-04-30 18:59:46 -07:00
Benjamin Saunders 36a3ec1525 cleanup 2018-04-30 18:59:44 -07:00
Benjamin Saunders 64754817eb expose more connection info 2018-04-29 20:00:13 -07:00
Benjamin Saunders d7754bfc31 core: fix underflow on client handshake failure 2018-04-29 14:20:13 -07:00
Benjamin Saunders 2fedb8d7a2 support for logging TLS keys 2018-04-29 14:13:04 -07:00
Benjamin Saunders 68e0db51a4 tokio: graceful close 2018-04-29 12:23:24 -07:00
Benjamin Saunders 63c4371d99 core: support backpressure on incoming connections 2018-04-29 11:28:56 -07:00
Benjamin Saunders fd69d565f6 core: fix client connection loss when Initial was retransmitted
Retry packets were being deemed illegal when they couldn't be
authenticated, which occurs routinely when an unexpectedly high RTT
causes Initial to be retransmitted before the first Retry is
received. Discarding such packets allows the connection to proceed.
2018-04-29 09:49:58 -07:00
Benjamin Saunders b8b063447a core: convenience impl From<ConnectionError> for io::Error 2018-04-28 23:43:40 -07:00
Benjamin Saunders c6dbcb4f33 simplify and debug stream freshness tracking 2018-04-28 22:50:25 -07:00
Benjamin Saunders 8476e11716 core: extensive cleanup 2018-04-28 21:40:21 -07:00
Benjamin Saunders b4bd5bc551 core: TLS certificate verification 2018-04-28 19:18:37 -07:00
Benjamin Saunders 6d0254a0ad core: improve documentation 2018-04-28 18:30:00 -07:00