Commit Graph

34 Commits

Author SHA1 Message Date
Marten Seemann
ef2b87f5d5 detect stateless resets for zero-length connection IDs (#5027) 2025-04-11 15:23:53 +02:00
Marten Seemann
e76621f75a register stateless reset tokens for connection IDs used on paths (#5023)
* register stateless reset tokens for connection IDs used on paths

* retire path stateless reset tokens on closing
2025-04-09 04:31:41 +02:00
Marten Seemann
84aba71c86 refactor connection ID manager to use a slice instead of a linked list (#5022)
* refactor connection ID manager to use a slice instead of a linked list

* add a benchmark test for the connection ID manager
2025-04-08 12:02:58 +02:00
Marten Seemann
e524d0c1ff implement connection ID handling for path probe packets (#4935) 2025-01-27 04:06:08 +01:00
Marten Seemann
d41f9749d3 fix memory leak on connection ID rotation when closing connection (#4852)
* fix memory leak on connection ID rotation during CONNECTION_CLOSE

In rare instances, the connection ID manager might switch to a new
connection ID when sending the packet containing the CONNECTION_CLOSE
frame. The connection ID manager removes the active stateless reset
token from the packet handler map when it is closed, so we need to make
sure that this happens last, otherwise the packet handler will keep a
pointer to the closed connection indefinitely.

* defer

* panic on use of connIDManager after Close
2025-01-22 19:35:16 +08:00
Marten Seemann
150b955d06 reject NEW_CONNECTION_ID frames when using zero-length connection IDs (#4878) 2025-01-16 11:30:08 +08:00
Marten Seemann
5243f13474 migrate the connection ID manager tests away from Ginkgo (#4860) 2025-01-12 15:07:11 +08:00
Marten Seemann
58cedf7a4f rename module, adjust import paths to quic-go/quic-go (#3680) 2023-01-21 19:53:57 -08:00
Marten Seemann
870fbe7ab0 migrate to Ginkgo v2 2022-10-11 16:38:44 +04:00
Marten Seemann
4cbb4f8114 remove ConnectionID.Equal function
Connection IDs can now be compared with ==.
2022-08-29 11:30:32 +03:00
Marten Seemann
1aced95d41 use an array instead of a byte slice for Connection IDs 2022-08-29 11:30:31 +03:00
Marten Seemann
592fb9cad9 introduce a dedicated qerr.TransportError and qerr.ApplicationError 2021-05-01 09:38:48 +07:00
Marten Seemann
05066ae877 immediately remove reset tokens when retiring a connection ID 2020-11-22 10:21:20 +07:00
Marten Seemann
80534c0944 wait until the handshake is complete before updating the connection ID 2020-11-02 16:21:38 +07:00
Marten Seemann
8752576f26 run gofumpt, enable the gofumpt linter 2020-10-26 09:33:35 +07:00
Marten Seemann
a1bb39d6ab introduce a protocol.StatelessResetToken 2020-07-10 19:55:20 +07:00
Marten Seemann
0ef1b2f92e pass around the stateless reset token directly, not pointers to it
Benchmarks show that it's actually faster to make a copy of this 16 byte
array than passing around a pointer to it.
2020-07-10 19:44:57 +07:00
Marten Seemann
34f0c93e88 don't retire the conn ID that's in use when receiving a retransmission 2020-07-06 17:54:00 +07:00
Marten Seemann
b0c1aed4d2 retire conn IDs with sequence numbers smaller than the currently active 2020-05-23 15:08:36 +07:00
Marten Seemann
eab5adc48c use the connection ID from the preferred_address transport parameter 2020-03-08 15:13:38 +07:00
Marten Seemann
f35a32989c enforce the active_connection_id_limit 2019-12-03 18:27:10 +07:00
Marten Seemann
f1fd07df59 retire delayed conn IDs arriving after a higher conn ID was retired 2019-11-24 10:12:02 +07:00
Marten Seemann
a53569839c don't queue the currently active conn ID when receiving a duplicate 2019-11-24 09:35:14 +07:00
Marten Seemann
ef2e0309f3 Merge pull request #2206 from lucas-clemente/ignore-reordered-ncid-frames
retire reordered NEW_CONNECTION_IDs that were already retired
2019-11-08 17:06:08 +07:00
Marten Seemann
63aa38eefa retire reordered NEW_CONNECTION_IDs that were already retired 2019-11-06 17:37:23 +07:00
Marten Seemann
2a8b038ca6 randomize the number of packets sent with the same connection ID 2019-11-05 16:16:58 +07:00
Marten Seemann
ccb777b834 retire the stateless reset token when the session is closed 2019-11-05 10:59:21 +07:00
Marten Seemann
011642e471 update the connection ID after sending 10000 packets 2019-11-05 10:59:21 +07:00
Marten Seemann
326279894b retire stateless tokens when updating the connection ID 2019-11-05 10:59:21 +07:00
Marten Seemann
5203b026e3 use the connection ID manager to save the server's stateless reset token 2019-11-05 10:59:21 +07:00
Marten Seemann
772ffd3d20 use the connection ID manager to save the destination connection ID 2019-11-05 10:59:21 +07:00
Marten Seemann
8db230753f retire old connection IDs when the peers sends us too many new ones 2019-11-05 10:59:21 +07:00
Marten Seemann
b9b44c60d3 implement forced retiring of connection IDs 2019-11-05 10:59:21 +07:00
Marten Seemann
031c1709e6 implement a basic store for new connection IDs 2019-11-05 10:59:21 +07:00