Marten Seemann
9e1afd4fb4
migrate the streams map tests away from Ginkgo ( #5040 )
2025-04-19 15:53:40 +02:00
Marten Seemann
79e5680890
migrate the retransmission queue tests away from Ginkgo ( #5054 )
2025-04-19 14:47:17 +02:00
Marten Seemann
2cfc9b8596
refactor retransmission queue to enable splitting of 1-RTT CRYPTO frames ( #5058 )
2025-04-19 14:14:55 +02:00
Marten Seemann
0c1db893f9
fix flaky TestStreamsMapOutgoingRandomizedOpenStreamSync ( #5056 )
2025-04-19 12:55:58 +02:00
Marten Seemann
02fea84c12
simplify the API of the retransmission queue ( #4793 )
2025-04-19 10:35:16 +02:00
Marten Seemann
7548cc069a
protocol: fix flaky TestVersionGreasing ( #5051 )
2025-04-19 10:19:00 +02:00
Marten Seemann
267cca773b
switch from math/rand to math/rand/v2 ( #5045 )
...
* switch from math/rand to math/rand/v2
* switch away from golang.org/x/exp/rand
2025-04-19 09:01:22 +02:00
Marten Seemann
c60438c528
migrate the outgoing streams map tests away from Ginkgo ( #5033 )
2025-04-19 08:12:35 +02:00
Marten Seemann
f4c478b627
fix potential deadlock when OpenStreamSync context is cancelled ( #5037 )
...
* fix potential deadlock when OpenStreamSync context is cancelled
* fix race condition when closing
2025-04-19 07:48:18 +02:00
Marten Seemann
b645ce35a2
use a slice instead of a map to track waiting OpenStreamSync calls ( #5036 )
...
Using a slice is faster than using a map, unless thousands
of OpenStreamSync calls are cancelled at the same time.
2025-04-19 04:17:53 +02:00
Marten Seemann
cda52a1e36
evict old paths when the client probes a new path ( #5034 )
...
* store paths in a slice, not a map
No functional change expected.
* save the timestamp of the last received packet for a path
* evict old paths
* reduce the path timeout to 5s
2025-04-19 04:10:54 +02:00
Marten Seemann
7cffd500f1
clarify that Config.InitialPacketSize constitutes a lower limit ( #5047 )
2025-04-14 15:44:32 +02:00
Marten Seemann
0894931c64
protocol: use math/rand/v2 to generate greased versions ( #5046 )
2025-04-14 14:30:04 +02:00
Marten Seemann
e3f1b7c410
switch packet packer to math/rand/v2 ( #5044 )
2025-04-14 12:12:48 +02:00
Mark Rushakoff
e2031b7aeb
use clickable links in documentation, fix list styling ( #4955 )
...
* Update comment styles
1. Use doc links (the square brackets around identifiers) to make
clickable links on pkg.go.dev (https://go.dev/doc/comment#doclinks )
2. Indent lists so that they are rendered properly -- at which point go
fmt updates the bullet character to a dash
(https://go.dev/doc/comment#lists )
3. Add a couple missing punctuation marks
These all will improve the experience of browsing the quic-go docs on
pkg.go.dev.
* ignore SA1019 for the ConnectionTracingID
* ci: exclude ConnectionTracing(ID, Key) from staticlint in http3
---------
Co-authored-by: Marten Seemann <martenseemann@gmail.com >
2025-04-14 07:44:29 +02:00
Marten Seemann
0ac0c1e72c
improve documentation for the ConnectionIDGenerator ( #5043 )
2025-04-14 06:41:17 +02:00
Marten Seemann
848c355079
simplify path probe PING frame packing logic ( #5028 )
...
* simplify path probe PING frame packing logic
* also pack PTO probe packets for Initial and Handshake
2025-04-14 05:47:58 +02:00
Marten Seemann
97da280142
implement closing of paths probed for connection migration ( #4979 )
2025-04-13 13:59:43 +02:00
Marten Seemann
26ba8d978f
fix flaky TestServerCreateConnection ( #5039 )
2025-04-13 07:20:52 +02:00
Peter Wu
23ec5b957c
fix flaky TestDatagramLoss ( #5017 )
...
Fixes #4784
2025-04-12 10:59:14 +02:00
Marten Seemann
57830ad295
migrate the incoming streams map tests away from Ginkgo ( #4957 )
2025-04-12 08:11:34 +02:00
Marten Seemann
213b54b010
fix flaky TestServer0RTTReordering ( #5032 )
2025-04-12 06:29:11 +02:00
Marten Seemann
a15ea40aa4
fix flaky TestConnectionPathValidation ( #5030 )
2025-04-12 05:19:08 +02:00
Marten Seemann
c9c2c86516
fix flaky TestDial test ( #5029 )
...
* give the kernel some time to free the socket
* remove problematic assertion
The listen function is started in a Goroutine, hence we
can’t be sure it’s already started.
2025-04-12 04:39:47 +02:00
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
79d546379b
rename ClientHelloInfo to ClientInfo ( #5016 )
...
There’s no ClientHello (which is a TLS concept) involved here.
2025-03-31 16:15:09 +02:00
Marten Seemann
3fd4f95a3b
http3: simplify ConfigureTLSConfig ( #5011 )
...
The previous logic allowed for setting different ALPN
values depending on the QUIC version in use. This was
needed to set the draft ALPN value before publication of
the RFC.
2025-03-30 15:17:39 +02:00
Marten Seemann
1d8f3f281a
ci: update golangci-lint to v2 ( #5007 )
2025-03-30 07:16:14 +02:00
Marten Seemann
4290638b55
quicvarint: refactor ifs into a switch statement ( #5012 )
...
No functional change expected.
2025-03-29 17:03:18 +01:00
Marten Seemann
78c51264b0
retransmit path probe packets ( #5005 )
...
New PATH_CHALLENGES are sent for as long as the call to
Path.Probe is active. The first retransmission is sent after 200ms,
with an exponential backoff afterwards.
2025-03-29 07:48:08 +01:00
Peter Wu
384a4b8d50
proxy: fix test timeout failures during cleanup ( #5010 )
...
Several proxy tests timed out because it got stuck in the packet read
loop after all tests have run. Avoid this by running the `conn.Close()`
Cleanup call from `newUPDConnLocalhost` before the timeout handler.
Update CI to run these tests.
Fixes: 3e87ea3f50 ("proxy: add function to simulate NAT rebinding (#4922 )")
Relates to: #5009
2025-03-29 13:04:44 +08:00
Marten Seemann
623e59b2a2
ackhandler: fix qlogging of path probe timer resets and cancellations ( #5003 )
2025-03-23 16:02:30 +01:00
Marten Seemann
017ed984f3
ackhandler: fix panic in probe packet tracking logic ( #4998 )
...
Under certain circumstances (loss and acknowledgment patterns), the
probe packet tracking logic could run into a nil-pointer dereference.
2025-03-21 06:28:19 +01:00
Marten Seemann
da127a9a53
fix flaky TestServerGetConfigForClientAccept ( #4999 )
2025-03-21 06:05:46 +01:00
Marten Seemann
e4641d0325
fix flaky TestConnectionConnectionIDChanges ( #4995 )
2025-03-16 05:36:26 +01:00
Marten Seemann
f063e25d41
fix flaky TestServerGetConfigForClientReject ( #4994 )
2025-03-16 05:21:51 +01:00
Marten Seemann
6fe46d6253
send PATH_RESPONSEs on the same path ( #4991 )
...
* make it possible to pack path probes with multiple frames
* simplify function signature of pathManager.HandlePacket
* simplify connection short header packet handling logic
No functional change expected.
* make server send PATH_RESPONSEs on the same path
This makes sure that we’re actually testing for return routability.
2025-03-16 04:28:53 +01:00
Marten Seemann
7e3d668981
qlog: fix logging of unset addresses in preferred_address transport parameter ( #4986 )
2025-03-16 04:07:20 +01:00
pittgi
3311514d67
http3: reject duplicate pseudo headers ( #4993 )
2025-03-16 03:52:25 +01:00
Marten Seemann
8f23c8a404
also send PATH_RESPONSEs for reordered packets ( #4990 )
...
A reordered PATH_CHALLENGE (or one sent on a slower path)
should still trigger a PATH_RESPONSE. The RFC only forbids
switching the path unless the non-probing packet has the
highest packet number received so far.
2025-03-16 03:46:33 +01:00
Marten Seemann
9ca74c7049
wire: correctly handle undefined IPv4 / IPv6 preferred address values ( #4985 )
...
* wire: correctly handle undefined IPv4 / IPv6 preferred address values
* make use of the netip.AddrPort zero value
2025-03-15 05:27:28 +01: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
565b7f75ab
fix flaky TestServerClose ( #4973 )
2025-03-06 08:30:52 +01:00
Marten Seemann
08a89e9f8b
migrate the server tests away from Ginkgo ( #4969 )
2025-03-03 10:58:51 +01:00
Marten Seemann
09bb613c66
trace dropping of unknown-version packets when Version Negotiation is off ( #4971 )
2025-02-24 13:57:22 +01:00
Marten Seemann
751ca8dfb6
fix typo in UDP connection helper function in tests ( #4970 )
2025-02-24 09:39:29 +01:00
Marten Seemann
6033030017
proxy: add source and destination address to delay and drop callbacks ( #4964 )
2025-02-22 12:21:40 +01:00