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