Commit Graph

2620 Commits

Author SHA1 Message Date
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
Benjamin Saunders d8f842e4d1 ECN-aware congestion control 2018-12-15 11:29:58 -08:00
Benjamin Saunders 9382040376 Implement ECN feedback
This doesn't impact local congestion control, but allows peers to use
ECN to inform theirs.
2018-12-15 11:29:58 -08:00
Benjamin Saunders 9787c83452 Use draft 17 recovery epoch accounting
Congestion control isn't an interop issue, so no need to wait.
2018-12-15 11:29:58 -08:00
Benjamin Saunders 427e231d2a Extract congestion handling into its own method 2018-12-15 11:29:58 -08:00
Benjamin Saunders cf1945ef4c Extend I/O APIs to support emitting/consuming ECN bits 2018-12-15 11:29:58 -08:00
Benjamin Saunders e9df8859ec Cosmetic cleanup 2018-12-15 11:29:58 -08:00
Benjamin Saunders 80a462eaa8 Constants for frame size minimum upper bounds
Only covers frames we've bothered to define a distinct type for, but can
be gracefully extended.
2018-12-15 11:29:58 -08:00
Benjamin Saunders a749b30b6c Correct CRYPTO frame fixed length upper bound
This wasn't accounting for the type byte.
2018-12-15 11:29:58 -08:00
Benjamin Saunders 308c156fc6 Test for reordering around key update 2018-12-15 10:48:13 -08:00
Benjamin Saunders 01c8669e73 Record and expose number of lost packets 2018-12-15 10:48:13 -08:00
Dirkjan Ochtman 3faca89e97 Hide Connection handshaking state behind API accessor 2018-12-13 09:51:24 +01:00