Commit Graph

400 Commits

Author SHA1 Message Date
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
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
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) 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
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
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
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
44207b8e72 http3: reset request streams accepted after graceful shutdown (#5116)
* http3: reset request streams accepted after graceful shutdown

The server needs to let the client know that these streams
are not getting processed, using the H3_REQUEST_REJECTED
error code.

* add an integration test for graceful shutdown stream cancellations
2025-05-05 04:28:01 +02:00
Marten Seemann
e1a1251c84 http3: send GOAWAY frame in a new Goroutine (#5114)
Sending might block if the peer didn't grant enough flow
control credit.
2025-05-04 06:21:03 +02:00
Marten Seemann
9d06679273 http3: migrate the server tests away from Ginkgo (#5085)
* http3: migrate the server tests away from Ginkgo

* http3: add a test for server settings
2025-04-30 06:53:37 +02:00
Marten Seemann
41cc01890d http3: return http.ErrServerClosed for ServeQUICConn after Server.Close (#5095) 2025-04-29 12:05:14 +02:00
Marten Seemann
5daf5b6535 http3: remove Alt-Svc entry when Server.Serve returns (#5093) 2025-04-29 05:58:10 +02:00
Marten Seemann
dae68d7ca0 http3: use a slice instead of a map to store active listeners (#5087)
* http3: use a slice instead of a map to store active listeners

This list will be relatively short, therefore it will be
more performant to use a slice instead of a map.

No functional change expected.

* http3: rename listenerInfo to listener
2025-04-29 04:08:41 +02:00
TheoTechnicguy
a9d8093eaf http3: fix documentation for Hijacker and HTTPStreamer (#5089)
* http3: update documentation for `Hijacker`

The documentation for `Hijacker` seems to be legacy from
[v0.43.0](https://github.com/quic-go/quic-go/releases/tag/v0.43.0). This
commit updates the documentation to reflect the current API use.

* http3: update documentation for `HTTPStreamer`

The documentation for `HTTPStreamer` seems to be legacy from
[v0.43.0](https://github.com/quic-go/quic-go/releases/tag/v0.43.0). This
commit updates the documentation to reflect the current API use.
2025-04-29 03:55:43 +02:00
Marten Seemann
f2b1842d52 http3: use httptest.NewRequest (#5086)
No functional change expected.
2025-04-29 03:45:04 +02:00
Marten Seemann
e423d4d184 http3: migrate the frames tests away from Ginkgo (#5067) 2025-04-27 09:44:32 +02:00
Marten Seemann
d84d985b92 http3: migrate the body tests away from Ginkgo (#5078) 2025-04-26 15:48:34 +02:00
Marten Seemann
7437cff1e0 http3: migrate the datagram tests away from Ginkgo (#5076) 2025-04-24 08:23:56 +02:00
Marten Seemann
d678f9a86c http3: migrate the response writer tests away from Ginkgo (#5075) 2025-04-23 13:52:22 +08:00
Marten Seemann
3d3922da47 http3: migrate the capsule tests away from Ginkgo (#5073) 2025-04-22 14:03:32 +02:00
Marten Seemann
ad0ffcbd37 http3: check response writer for http.ResponseController methods (#5071) 2025-04-22 13:37:26 +02:00
Marten Seemann
89d9984156 http3: simplify request writer by writing to an io.Writer (#5070)
It’s always preferable to use the most minimal interface.
2025-04-22 13:24:46 +02:00
Marten Seemann
f1c7a5df73 http3: migrate the headers tests away from Ginkgo (#5068) 2025-04-22 12:54:31 +02:00
Marten Seemann
4c9f6df723 http3: migrate the request writer tests away from Ginkgo (#5069) 2025-04-22 12:53:48 +02:00
Marten Seemann
b3f55bb7b7 use assert.AnError consistently in tests (#5066)
No functional change expected.
2025-04-21 03:52:08 +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
pittgi
3311514d67 http3: reject duplicate pseudo headers (#4993) 2025-03-16 03:52:25 +01:00
Marten Seemann
02e276ed70 http3: minor simplification of panic handling logic (#4942) 2025-01-28 04:27:09 +01:00
Marten Seemann
54b97a5079 http3: fix flaky transport tests (#4900) 2025-01-21 14:05:50 +08:00
Marten Seemann
ceabb6bd9a http3: fix flaky TestTransportConnectionRedial (#4884) 2025-01-18 13:14:44 +08:00
Marten Seemann
0fd2decbd5 http3: rename singleRoundTripper interface to clientConn (#4875)
No functional change expected.
2025-01-16 14:37:00 +08:00