Benjamin Saunders
4096cdc19c
Issue new connection IDs on connection established
2018-12-25 12:42:06 +01:00
Benjamin Saunders
a1915edfd8
Extract frame::NewConnectionId struct
2018-12-25 12:42:06 +01:00
Benjamin Saunders
b973de2514
Don't leak client connections with bad Initial
2018-12-25 12:42:06 +01:00
Benjamin Saunders
e6bc4f97e6
Clientside stateless resets
...
This will only become useful once we send a new conection ID to the
server, as the client's initial connection ID is not associated with a
reset token due to client transport parameters not being protected.
2018-12-25 12:42:06 +01:00
Benjamin Saunders
80b27f8d43
Fix illegal stateless reset size, looping vulnerability
2018-12-25 12:42:06 +01:00
Benjamin Saunders
cb8114f2e9
Extract stateless reset transmit into its own method
2018-12-25 12:42:06 +01:00
Benjamin Saunders
9cdb729a52
Style fixes
2018-12-25 12:42:06 +01:00
Benjamin Saunders
f7a33fcc17
Expand use of RESET_TOKEN_SIZE
2018-12-25 12:42:06 +01:00
Benjamin Saunders
6c27427c1c
Privatize Retransmits fields
2018-12-25 12:42:06 +01:00
Benjamin Saunders
4fce79f7f3
Isolate header keys from traffic keys
...
This lets us avoid key copying that would otherwise arise due to the
somewhat differing lifecycles of the two key types, and which crypto
APIs seem to discourage.
2018-12-25 09:56:44 +01:00
Benjamin Saunders
21c5b103f7
Check reserved bits when connected
2018-12-25 09:56:44 +01:00
Benjamin Saunders
9314c88828
Fix underflow on decoding truncated long packets
2018-12-25 09:56:44 +01:00
Benjamin Saunders
e3d3344747
Draft 17 header protection ciphers
2018-12-25 09:56:44 +01:00
Benjamin Saunders
e2fafe45e2
Update version to draft 17
2018-12-25 09:56:44 +01:00
Benjamin Saunders
3b295dec72
PADDING shouldn't directly elicit ACKs
2018-12-25 09:56:44 +01:00
Benjamin Saunders
4258d22e4c
Pad packets as needed for header protection sampling
2018-12-25 09:56:44 +01:00
Benjamin Saunders
28aa2f1f9b
Draft 17 header protection
2018-12-25 09:56:44 +01:00
Benjamin Saunders
d408867d97
Don't update header keys in 1RTT
2018-12-25 09:56:44 +01:00
Benjamin Saunders
06d3bef4d6
Rename PacketNumberKey to HeaderKey
2018-12-25 09:56:44 +01:00
Benjamin Saunders
72e480be9f
Draft 17 key derivation
2018-12-25 09:56:44 +01:00
Benjamin Saunders
0c6d2f9803
Draft 17 flags and packet number encoding
2018-12-25 09:56:44 +01:00
Benjamin Saunders
f4862a9d6a
Draft 17 frames
2018-12-23 23:55:19 -08:00
Benjamin Saunders
01083617ea
Don't retransmit PING
2018-12-23 23:55:19 -08:00
Benjamin Saunders
8d824b1263
impl Display/slog::Value for Directionality
2018-12-23 23:55:19 -08:00
Benjamin Saunders
6ba840281c
Naming consistency
2018-12-23 23:52:24 -08:00
Benjamin Saunders
2998b95241
Draft 17 transport parameters
2018-12-23 23:52:24 -08:00
stammw
e516160b03
Upgrade orion to 0.11
2018-12-23 14:21:15 -08:00
Benjamin Saunders
fb3c317f60
Send/receive ECN bits on linux
2018-12-22 11:48:24 -08:00
Dirkjan Ochtman
70513bb72e
Inline Context type back into Endpoint
2018-12-22 11:47:48 -08:00
Dirkjan Ochtman
1fe4235abe
Reorder code in endpoint module
2018-12-22 11:47:48 -08:00
Dirkjan Ochtman
4d336d489c
Introduce is_drained(), make Connection state private
2018-12-22 11:47:48 -08:00
Dirkjan Ochtman
9e24db7ccb
Move core implementation of Endpoint::timeout() into Connection
2018-12-22 11:47:48 -08:00
Dirkjan Ochtman
f53a132a1a
Remove Connections from eventful_conns on forget
2018-12-22 11:47:48 -08:00
Benjamin Saunders
5ff6936cea
Remove ConnectionDrained event
...
This event was always emitted exactly when the close timer expires,
which is already known to the caller. Making it implicit lets us
reduce bookkeeping.
2018-12-17 22:30:40 -08:00
Dirkjan Ochtman
3314364e07
Take StreamId arguments by value
2018-12-18 06:42:14 +01:00
Dirkjan Ochtman
025db1be94
Fix issues as suggested by clippy
2018-12-18 06:42:14 +01:00
Benjamin Saunders
07928e42cd
Fix Connection::poll_io usage advice
2018-12-17 10:45:50 -08:00
Benjamin Saunders
46c9174637
Test retransmission of dropped client Initial
2018-12-17 10:45:50 -08:00
Benjamin Saunders
c444261ccf
Fix CRYPTO frames never being retransmitted
2018-12-17 10:45:50 -08:00
Benjamin Saunders
fa2c88ac5d
Mark connections dirty after loss detection timeout
...
When the loss detection timer expires, a connection will want to
retransmit data and hence must be polled.
2018-12-17 10:45:50 -08:00
Benjamin Saunders
29834d058d
Pretty-print times in tests
2018-12-17 10:45:50 -08:00
Benjamin Saunders
198f170b6a
Don't send zero-length CRYPTO frames
2018-12-17 00:24:50 -08:00
Benjamin Saunders
ec77474511
Tweak timer I/O representation
2018-12-17 00:24:50 -08:00
Benjamin Saunders
5aa7b3840e
Replace Multiplexer with per-connection queues
...
This simplifies signatures, reduces buffering, and further narrows the
Endpoint-Connection interface.
2018-12-17 00:24:50 -08:00
Benjamin Saunders
87f7f7107f
Assemble normal packets on demand
2018-12-17 00:24:50 -08:00
Dirkjan Ochtman
27a558ee1c
Keep Packet intact in Endpoint::handle_initial()
2018-12-15 21:10:37 +01:00
Dirkjan Ochtman
11b744e4ec
Keep Crypto instances in a single deque
2018-12-15 21:10:37 +01:00
Dirkjan Ochtman
a04951358a
Delay check for stateless reset ( fixes #118 )
2018-12-15 21:00:43 +01:00
Dirkjan Ochtman
8ce4a5752d
Add comment about unused From impl
2018-12-15 21:00:43 +01:00
Dirkjan Ochtman
7d3f7a5c15
Remove unused argument
2018-12-15 21:00:43 +01:00