Commit Graph

34 Commits

Author SHA1 Message Date
Marten Seemann
adc13be540 implement a memory-optimized time.Time replacement (#5334)
* implement a memory-optimized time.Time replacement

* monotime: properly handle systems with bad timer resolution (Windows)

* monotime: simplify Since
2025-09-14 08:12:10 +02:00
Marten Seemann
2082d2c6b9 move connection tracking into the Transport (#5113) 2025-05-05 05:05:17 +02:00
Marten Seemann
9b3ff059fc delete closed connections after 3 PTOs (#5117)
In most cases, this should be earlier than the current
timeout value of 5s.
2025-05-04 12:51:39 +02:00
Marten Seemann
4d39fc31c5 simplify tracking of Transports for connection migration (#5111)
No functional change expected.
2025-05-03 16:06:23 +02:00
Marten Seemann
97e7657df5 delete retired connection IDs after 3 PTOs (#5109) 2025-05-03 14:24:40 +02:00
Marten Seemann
24acc54ef1 add support for connection migration (#4960) 2025-03-12 06:11:11 +01:00
Marten Seemann
0a2c2f0a82 extend connection ID generator to interact with multiple Transports (#4974)
This is needed when multiple paths are in use.
2025-03-12 05:47:58 +01:00
Marten Seemann
eb2f986a06 refactor connection ID generator callback handling (#4961) 2025-02-22 12:06:01 +01:00
Marten Seemann
62947d97f5 simplify generation of stateless reset tokens (#4858) 2025-01-11 17:52:59 +08:00
Marten Seemann
c786a46f42 remove unused perspective arg from packetHandlerMap.ReplaceWithClosed (#4330) 2024-02-10 19:27:51 -08:00
Marten Seemann
22411e16d5 utils: switch to standard library min and max functions (#4218)
These functions were added in Go 1.21.
2023-12-27 21:19:13 -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
5c7d120b8f remove unused version parameter form the connIDGenerator 2023-01-18 20:50:17 +13: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
João Oliveirinha
66f6fe0b71 add support for providing a custom Connection ID generator via Config (#3452)
* Add support for providing a custom ConnectionID generator via Config

This work makes it possible for servers or clients to control how
ConnectionIDs are generated, which in turn will force peers in the
connection to use those ConnectionIDs as destination connection IDs  when sending packets.

This is useful for scenarios where we want to perform some kind
selection on the QUIC packets at the L4 level.

* add more doc

* refactor populate config to not use provided config

* add an integration test for custom connection ID generators

* fix linter warnings

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
2022-08-24 04:06:16 -07:00
Marten Seemann
b659414495 use a single Go routine to send copies of CONNECTION_CLOSE packets 2022-08-21 15:41:47 +03:00
Marten Seemann
c3ab9c4ea9 replace all connection IDs at the same time when connection is closed 2022-08-21 14:09:49 +03:00
Marten Seemann
43bde14cf7 implement generic Min and Max functions 2022-08-10 14:59:05 +02:00
Marten Seemann
b2857b5442 remove the RetireBugBackwardsCompatibilityMode 2021-06-26 15:49:02 -07:00
Marten Seemann
592fb9cad9 introduce a dedicated qerr.TransportError and qerr.ApplicationError 2021-05-01 09:38:48 +07:00
Marten Seemann
10217a6f3b fix issuing of connection IDs when dialing a 0-RTT connections
When dialing a 0-RTT connection, the client first restores the transport
parameters from the original connection, and then applies the transport
parameters provided by the server on the new connections.
2021-03-03 14:10:06 +08:00
Marten Seemann
e1f56127df only use the conn ID backwards compatibility mode with draft-29 2020-10-22 20:33:17 +07:00
Marten Seemann
a1bb39d6ab introduce a protocol.StatelessResetToken 2020-07-10 19:55:20 +07:00
Marten Seemann
ce5ddc050c add a flag to disable conn ID generation and the check for retired conn IDs 2020-07-09 10:40:56 +07:00
Marten Seemann
33fc464bac use PROTOCOL_VIOLATION for invalid RETIRE_CONNECTION_ID frames 2020-07-08 12:24:15 +07:00
Marten Seemann
25db2166dd enforce that a conn ID is not retired in a packet that uses that conn ID 2020-07-08 12:06:57 +07:00
Marten Seemann
6d61dccc2f rename the constructors for the various qerr.Error flavors 2020-03-21 10:53:03 +07:00
Marten Seemann
634169b061 don't return a stateless reset token when adding a new connection ID
Both server and client didn't make use of the token. It was only used by
the connIDGenerator.
2020-02-03 17:31:47 +01:00
Marten Seemann
3f6030fdb3 count the connection ID used during the handshake towards the limit 2019-12-03 18:25:15 +07:00
Marten Seemann
5a834851a8 route retransmissions of the client's Initial to the right session 2019-11-26 17:01:21 +07:00
Marten Seemann
5d0d0d0679 implement replacing with a closed session for all active connection IDs 2019-11-05 11:00:07 +07:00
Marten Seemann
f948165824 implement removing of all active connection IDs 2019-11-05 11:00:07 +07:00
Marten Seemann
121795977d implement issuing and retiring of connection IDs 2019-11-05 11:00:07 +07:00