Commit Graph

789 Commits

Author SHA1 Message Date
Benjamin Saunders ef688531dc Adopt "ack eliciting" terminology 2018-12-26 22:07:06 +01:00
Benjamin Saunders 2932d4985a Style tweak 2018-12-26 22:07:06 +01:00
Benjamin Saunders 97937a8fed Adopt draft 17 kMaxDatagramSize 2018-12-26 22:07:06 +01:00
Benjamin Saunders fc92cae119 Rename SentPacket::bytes to size 2018-12-26 22:07:06 +01:00
Benjamin Saunders 8debe167fd Draft 17 stateless resets 2018-12-25 12:42:06 +01:00
Benjamin Saunders da00c501fb Retire old remote connection IDs 2018-12-25 12:42:06 +01:00
Benjamin Saunders a550d7148d Always adopt a client's first NEW_CONNECTION_ID
This allows us to process future stateless resets from the client.
2018-12-25 12:42:06 +01:00
Benjamin Saunders 065da0e297 Implement RETIRE_CONNECTION_ID 2018-12-25 12:42:06 +01:00
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