Commit Graph

6970 Commits

Author SHA1 Message Date
Marten Seemann
78e77bcfdb convert SendStream to a struct (#5172) 2025-06-01 05:53:53 +02:00
Marten Seemann
eb656df2fe convert Stream interface to a struct (#5149) 2025-06-01 05:40:05 +02:00
Marten Seemann
7ca7a973ef avoid triggering macOS dual-stack flakiness in HTTP/3 integration tests (#5187)
Unfortunately, there’s still no fix in sight for https://github.com/golang/go/issues/67226.
2025-05-31 10:40:20 +02:00
Marten Seemann
eb427b599e http3: fix flaky TestConnControlStreamFailure (#5188) 2025-05-31 10:21:17 +02:00
Marten Seemann
f8a1711ce7 http3: fix flaky TestServerRequestHeaderTooLarge (#5186) 2025-05-31 09:58:20 +02:00
Marten Seemann
a39928c556 http3: fix flaky TestClientResponseValidation (#5183) 2025-05-31 09:48:45 +02:00
Marten Seemann
06aad3b4ba fix flaky TestTransportReplaceWithClosed (#5181) 2025-05-31 07:52:56 +02:00
Marten Seemann
d5f5dfa9d3 fix flaky TestGracefulShutdownPendingStreams (#5179) 2025-05-31 07:33:57 +02:00
Marten Seemann
1d58651358 fix flaky TestHTTPRequestAfterGracefulShutdown (#5178) 2025-05-31 07:31:20 +02:00
Marten Seemann
c00a673d98 fix flaky TestConnectionPathValidation (#5175) 2025-05-31 06:02:30 +02:00
Marten Seemann
06ee16ee67 fix flaky TestDatagramLoss (#5174) 2025-05-31 05:01:47 +02:00
Marten Seemann
4dd059522f mockquic: remove package (#5171) 2025-05-30 08:10:16 +02:00
Marten Seemann
56ff2a58cc http3: use actual QUIC connection in stream tests (#5170) 2025-05-30 06:47:53 +02:00
Marten Seemann
e539fc4e88 http3: fix flaky TestClientStreamHijacking (#5169) 2025-05-30 05:11:04 +02:00
Marten Seemann
e354463e64 http3: use actual QUIC connection in frames tests (#5165)
* http3: use actual QUIC connection in frames tests

* wait for handshake completion
2025-05-30 04:54:48 +02:00
Marten Seemann
9ef305508d http3: use actual QUIC stream in state tracking stream tests (#5166)
* http3: use actual QUIC stream in state tracking stream tests

* avoid sleeps
2025-05-30 04:47:17 +02:00
Marten Seemann
d9528a5643 http3: use actual QUIC connection in transport tests (#5164) 2025-05-29 15:10:30 +02:00
Marten Seemann
4e81b28694 http3: use actual QUIC connection and stream in conn tests (#5163)
* http3: use actual QUIC connection and stream in conn tests

* add errror assertion

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-29 14:42:36 +02:00
Marten Seemann
77dff99007 http3: use actual QUIC connection and stream in client tests (#5162) 2025-05-29 13:06:36 +02:00
Marten Seemann
293d45da4b http3: use actual QUIC connection and stream in server tests (#5161) 2025-05-29 11:06:09 +02:00
Marten Seemann
5c3af443c1 http3: simplify HTTP datagram handling (#5156) 2025-05-29 06:23:05 +02:00
Marten Seemann
0b834e6f46 http3: convert Stream from an interface to a struct (#5154) 2025-05-29 05:41:40 +02:00
Marten Seemann
2675d0845f http3: convert RequestStream from an interface to a struct (#5153) 2025-05-29 05:08:39 +02:00
Marten Seemann
45e0d5fc7d qlog: add support for reset_stream_at frame and transport parameter (#5160) 2025-05-28 09:43:42 +02:00
Marten Seemann
5d7ee61f5f wire: add support for the reset_stream_at transport parameter (#5158) 2025-05-28 06:30:02 +02:00
Marten Seemann
cb5c3f2aad implement parsing and writing of RESET_STREAM_AT frames (#5155)
* implement parsing and writing of RESET_STREAM_AT frames

* wire: add support for parsing RESET_STREAM_AT frames
2025-05-28 05:49:54 +02:00
Marten Seemann
eb7b7df1db http3: migrate the state tracking stream tests away from Ginkgo (#5151) 2025-05-24 05:07:17 +02:00
Marten Seemann
5e5d03cf8d http3: migrate the stream tests away from Ginkgo (#5150) 2025-05-23 16:07:00 +02:00
Marten Seemann
04eab22893 http3: fix off-by-one error when processing the GOAWAY stream ID (#5145) v0.52.0 2025-05-20 08:43:33 +02:00
Marten Seemann
363e0ccafb http3: implement client-side GOAWAY handling (#5143)
When receiving a GOAWAY frame, the client:
* immediately closes the connection if there are no active requests
* refuses to open streams with stream IDs larger than the stream ID in
the GOAWAY frame
* closes the connection once the stream count drops to zero
2025-05-18 07:33:43 +02:00
Marten Seemann
06e8ee1bcf http3: reset stream if the server sends too many 1xx responses (#5144) 2025-05-17 06:18:18 +02:00
Ameame
8ef0a71581 store the RTT in the token, not in the session ticket (#5065)
* remove RTT from session ticket

* save RTT in token

* use mus as rtt unit in token

* move RTT from session state to token on client side

* Rename the rtt variables

Co-authored-by: Marten Seemann <martenseemann@gmail.com>

* Update internal/handshake/token_generator.go

Co-authored-by: Marten Seemann <martenseemann@gmail.com>

* Update token_generator.go

* Update connection.go

* Update token_generator.go

* correct slice  access in fuzz.go

* rearrange connection constructor parameters

---------

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
2025-05-16 12:25:58 +02:00
sukun
eb8547ca73 pass ClientInfo to Transport.ConnContext, allow rejection of handshake (#5122)
* pass *ClientInfo to ConnContext

This allows users to set some state related to the client's remote
address in `ConnContext`.

This also refuses connection early if the returned context is cancelled.

* review comments

* better error assertion

---------

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
2025-05-16 12:03:05 +02:00
Marten Seemann
77c401dcbb http3: only retry requests for which it is safe to do so (#5141)
* add an integration test for HTTP/3 redialing logic

* http3: only retry requests for which it is safe to do so
2025-05-16 05:22:13 +02:00
Marten Seemann
d7ca54c602 fix flaky TestHandshakeCloseListener (#5140) 2025-05-11 06:54:28 +02:00
Marten Seemann
fe02bc2b66 http3: fix flaky TestClientRequestLengthLimit (#5137) 2025-05-11 06:12:26 +02:00
Marten Seemann
50dd857c57 http3: migrate the connection tests away from Ginkgo (#5133) 2025-05-10 16:17:25 +02:00
Marten Seemann
6f8460a821 http3: keep datagram receive loop running on datagram for unknown stream (#5136) 2025-05-10 14:41:47 +02:00
Marten Seemann
3f97a011a7 http3: migrate the client tests away from Ginkgo (#5096)
* http3: migrate the client tests away from Ginkgo

* http3: add a client settings test
2025-05-10 05:24:21 +02:00
Marten Seemann
8474eddd3a use the slices package to simply QUIC version comparisons (#5130)
No functional change expected.
2025-05-09 06:24:45 +02:00
Marten Seemann
1725cb0878 http3: close QUIC listeners created by Server on graceful shutdown (#5101) 2025-05-08 08:22:11 +02:00
Marten Seemann
8296ba7d19 http3: don't close QUIC listeners created by the application (#5129) 2025-05-08 07:40:23 +02:00
Marten Seemann
f3f476a908 never close accepted connections when the listener is closed (#5108) 2025-05-06 05:18:44 +02:00
Marten Seemann
3d183f0e19 remove the changelog (#5074) 2025-05-06 05:05:59 +02:00
Marten Seemann
cfc6c16f36 fix race condition in tests when setting the key update interval (#5121)
* fix race conditions in tests when setting the key update interval

* remove test for running transports and handshakes
2025-05-06 04:45:27 +02:00
Marten Seemann
4c6aca6b43 remove stray assertion that handshakes are running from tests (#5123)
The RunHandshake method this function was basing its assertion on was
removed a long time ago.
2025-05-06 09:13:38 +07:00
Zxilly
21e5646e53 fix ECN control messages on big-endian architectures (#5105)
* fix: correct select low bits when dealing with ecn

* fix: revert action on ipv4

* chore: use uint8

Co-authored-by: Marten Seemann <martenseemann@gmail.com>

* fix: use binary to handle byte order

---------

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
2025-05-05 17:12:03 +02:00
Marten Seemann
37d0a823d8 ci: only apply the interop Docker build concurrency group for pushes (#5120)
There’s no risk that the uploaded Docker image gets
overwritten for pull requests, since pull requests don’t
upload the image.
2025-05-05 13:27:59 +02:00
Marten Seemann
57e46f8a4c split SNI and ECH extensions in the ClientHello (#5107)
* create a new type for crypto stream used for Initial data

This currently the exact same implementation as the other
streams, thus no functional change is expected.

* handshake: implement a function to find the SNI and the ECH extension

* move the SNI parsing logic to the quic package

* implement splitting logic

* generalize cutting logic

* introduce QUIC_GO_DISABLE_CLIENTHELLO_SCRAMBLING

* improve testing
2025-05-05 13:04:10 +02:00
Marten Seemann
11ccfff388 ci: remove stray GITREF env from Docker interop workflow (#5119) 2025-05-05 12:56:10 +02:00