Marten Seemann
f5ceb73171
handshake: generate CRYPTO_ERRORs for internal_error TLS alerts ( #4601 )
...
* handshake: generate CRYPTO_ERRORs for internal_error TLS alerts
* remove stray comment
2024-08-03 17:04:03 -07:00
Marten Seemann
8451b0afd7
utils: remove scarcely used time helper functions ( #4593 )
2024-07-23 14:16:12 -07:00
Marten Seemann
2a082f973a
http3: allow re-dialing of connection after a dial error ( #4573 )
...
* http3: do not cache dial error
* add an integration test
* http3: add a unit test for dial failures
---------
Co-authored-by: 世界 <i@sekai.icu >
2024-06-22 21:38:49 -07:00
Marten Seemann
b19f2f9e3a
metrics: use the default metrics tracer in integration tests ( #4562 )
2024-06-10 14:58:47 +08:00
Marten Seemann
cc9a5ee744
qlog: rename DefaultTracer to DefaultConnectionTracer ( #4556 )
2024-06-05 03:50:01 -07:00
Marten Seemann
44e0147f2e
pass a context to Transport.ConnContext ( #4536 )
...
* pass a context to Transport.ConnContext
This context is cancelled when the QUIC connection is closed, or when
the QUIC handshake fails. This allows the application to easily build
and garbage collect a map of active connections.
* correctly handle fresh contexts returned from ConnContext
2024-06-04 21:37:18 -07:00
Marten Seemann
07acaad2f7
add context to EarlyConnection.NextConnection, handle handshake failures ( #4551 )
2024-06-04 20:51:54 -07:00
Marten Seemann
0db354456a
make Path MTU Discovery resilient to random packet loss ( #4545 )
2024-06-04 02:10:11 -07:00
Marten Seemann
459a6f3df9
fix the server's 0-RTT rejection logic when using GetConfigForClient ( #4550 )
2024-06-03 03:42:58 -07:00
Marten Seemann
5446b5f912
http3: use the connection, not the stream context, on the server side ( #4510 )
2024-06-03 10:23:35 +08:00
Marten Seemann
0d1e27d77c
introduce Transport.ConnContext, use client's context on the connection ( #4507 )
...
* introduce Transport.ConnContext, use client's context on the connection
* panic if ConnContext returns nil
2024-05-26 21:30:19 -07:00
Marten Seemann
e41d1f9dd7
logging / qlog: add support for DPLPMTUD ( #4517 )
...
* logging / qlog: add support for DPLPMTUD
* improve the MTU discovery integration test
2024-05-14 02:37:54 -07:00
Marten Seemann
056a332ac4
retry the PMTUD integration test up to 3 times ( #4519 )
...
This test is very sensitive to packet loss, as the loss of a single Path MTU
probe packet makes DPLPMTUD clip the assumed MTU at that value.
2024-05-14 02:14:02 -07:00
Marten Seemann
f3d76b39bf
make the initial packet size configurable ( #4503 )
2024-05-08 21:41:08 -07:00
Marten Seemann
e90a0d4e03
increase initial packet size to 1280 bytes (for both IPv4 and IPv6) ( #4500 )
2024-05-08 20:55:19 -07:00
Marten Seemann
66f968b9ff
reject sending of DATAGRAM frames that exceed the current MTU ( #4497 )
...
* reject sending of datagrams that exceed the current MTU
* check datagram size in PMTUD integration test
2024-05-07 00:06:00 -07:00
Marten Seemann
f1b473d925
add an integration test for DPLPMTUD ( #4498 )
...
* add an integration test for DPLPMTUD
* use a v4-only socket in DPLPMTUD test
* increase DPLPMTUD test timeout
2024-05-06 22:15:20 -07:00
Marten Seemann
4f4da0423f
ci: disable exhaustive linter for test files ( #4499 )
2024-05-06 21:36:22 -07:00
Marten Seemann
83eeb9cc66
fix incorrect reuse of UDP connection in handshake benchmark ( #4491 )
2024-05-05 06:17:08 -07:00
Marten Seemann
bb6f066aa5
http3: use the stream context to detect when the send side is closed ( #4489 )
2024-05-04 19:15:35 -07:00
Marten Seemann
c7b58b568f
http3: refuse to send datagrams associated with a closed stream ( #4488 )
...
It's only valid to send datagrams associated with a stream whose send
direction is not closed.
2024-05-04 17:48:07 -07:00
Marten Seemann
c0250ce824
include the maximum payload size in the DatagramTooLargeError ( #4470 )
...
This is more useful than the maximum frame size. The user of the library
shouldn't have to care about the QUIC framing layer.
---------
Co-authored-by: 世界 <i@sekai.icu >
2024-04-27 05:54:16 -07:00
Marten Seemann
34f4d1443f
http3: implement on the HTTPStreamer on the ResponseWriter, flush header ( #4469 )
...
Currently the HTTPStreamer is implemented on the http.Request.Body. This
complicates usage, since it's not easily possible to flush the HTTP
header, requiring users to manually flash the header before taking over
the stream.
With this change, the HTTP header is now flushed automatically as soon
as HTTPStream is called.
2024-04-27 04:30:39 -07:00
Marten Seemann
083ceb42f2
http3: rename Settings.EnableDatagram to EnableDatagrams ( #4466 )
...
This makes it consistent with the quic.Config and the config flag on the
http3.Server and http3.RoundTripper.
2024-04-26 13:35:21 -07:00
Marten Seemann
2a37c53143
http3: add support for HTTP Datagrams (RFC 9297) ( #4452 )
...
* http3: add support for HTTP Datagrams (RFC 9297)
* README: reference HTTP Datagrams (RFC 9297)
2024-04-26 11:21:04 -07:00
Marten Seemann
b0eb608180
testutils: add a token parameter to ComposeInitialPacket ( #4391 )
2024-04-23 13:43:28 -07:00
mchtech
86b53a2516
http3: process 1xx status codes ( #4437 )
...
* process http 1xx status code
Signed-off-by: mchtech <michu_an@126.com >
* add integration tests
Signed-off-by: mchtech <michu_an@126.com >
* fix tests
---------
Signed-off-by: mchtech <michu_an@126.com >
Co-authored-by: Marten Seemann <martenseemann@gmail.com >
2024-04-21 02:56:45 -07:00
Marten Seemann
e58fa87566
catch spurious UDP sendmsg errors in multiplex integration test ( #4451 )
...
* catch spurious UDP sendmsg errors in multiplex integration test
* platform-dependent isPermissionError
2024-04-20 06:21:24 -07:00
Marten Seemann
18422ad1c4
http3: remove RoundTripOpt.CheckSettings ( #4416 )
...
The settings can be obtained from the SingleDestinationRoundTripper.
2024-04-20 02:42:33 -07:00
Marten Seemann
90627f6f7c
http3: simplify buffering of small responses ( #4432 )
2024-04-13 16:46:19 -07:00
Marten Seemann
da410a7b59
http3: expose a SingleDestinationRoundTripper ( #4424 )
2024-04-11 09:55:05 -07:00
Marten Seemann
9efc324637
http3: remove Settingser, StreamCreator, return Connection from Hijacker ( #4425 )
2024-04-11 08:47:00 -07:00
Marten Seemann
eb310a6db8
http3: expose an OpenStream method on the RoundTripper ( #4409 )
...
The stream exposes two methods required for doing an HTTP request:
SendRequestHeader and ReadResponse. This can be used by applications
that wish to use the stream for non-HTTP content afterwards. This will
lead to a simplification in the API we need to expose for WebTransport,
and will make it easier to send HTTP Datagrams associated with this
stream.
2024-04-09 13:14:14 -07:00
Marten Seemann
e310b80cf3
expose the connection tracing ID on the stream context ( #4414 )
...
This is especially interesting for HTTP servers: They can now learn
which connection a request was received on.
2024-04-06 07:41:25 -07:00
Marten Seemann
18d6d2934b
don't set the Allow0RTT flag for the client in the HTTP integration test ( #4397 )
2024-03-31 14:45:00 -07:00
Marten Seemann
97d31dad39
http3: introduce a Settingser to query the client's SETTINGS ( #4389 )
...
The http.Request.Body can be type-asserted to a http3.Settingser. The
Settings method on this interface blocks until the client's SETTINGS
frame has been received.
2024-03-31 14:44:42 -07:00
Marten Seemann
49b9965525
http3: rename RoundTripper.QuicConfig to RoundTripper.QUICConfig ( #4385 )
2024-03-23 15:29:39 -07:00
Marten Seemann
89020e380a
http3: rename Server.QuicConfig to Server.QUICConfig ( #4384 )
2024-03-23 14:39:34 -07:00
Marten Seemann
a19f99e98b
add an integration test for 0-RTT GET requests ( #4386 )
2024-03-23 14:26:02 -07:00
Marten Seemann
9971fedd42
use Transport.VerifySourceAddress to control the Retry Mechanism ( #4362 )
...
* use Transport.VerifySourceAddress to control the Retry Mechanism
This can be used to rate-limit handshakes originating from unverified
source addresses. Rate-limiting for handshakes can be implemented using
the GetConfigForClient callback on the Config.
* pass the remote address to Transport.VerifySourceAddress
2024-03-14 17:35:52 -07:00
Marten Seemann
497d3f58a5
http3: add a RoundTripOpt to check the server's SETTINGS frame ( #4355 )
...
For some requests, the client is required to check the server's HTTP/3
SETTINGS. For example, a client is only allowed to send HTTP/3 datagrams
if the server explicitly enabled support.
SETTINGS are sent asynchronously on a control stream (usually the first
unidirectional stream). This means that the SETTINGS might not be
available at the beginning of the connection. This is not expected to be
the common case, since the server can send the SETTINGS in 0.5-RTT data,
but we have to be able to deal with arbitrary delays.
For WebTransport, there are even more SETTINGS values that the client
needs to check. By making CheckSettings a callback on the RoundTripOpt,
this entire validation logic can live at the WebTransport layer.
2024-03-12 01:03:00 -07:00
Marten Seemann
ca787d6f00
add an AddrVerified field to the ClientHelloInfo ( #4360 )
...
* add an AddressVerified field to the ClientHelloInfo
* rename ClientHelloInfo.AddressVerififed to ClientHelloInfo.AddrVerififed
2024-03-11 05:00:25 -07:00
Marten Seemann
30e01b9524
use the transport tracer in integration tests
2024-03-09 19:32:15 +09:30
Marten Seemann
dc49f5673b
fix flaky 0-RTT packet loss recovery test ( #4306 )
2024-02-02 22:19:33 -08:00
Marten Seemann
fbaa941ea1
protocol: rename VersionNumber to Version ( #4295 )
2024-01-31 21:57:33 -08:00
Marten Seemann
da25787a3d
testutils: make the package public ( #4290 )
...
This package can be useful outside of quic-go. We're not making any API
guarantees at this point.
2024-01-30 19:00:08 -08:00
Marten Seemann
03ba124241
testutils: add a perspective function parameter to ComposeInitialPacket ( #4276 )
...
Currently not used, but this is useful when crafting Initial packets
sent from the client. No functional change expected.
2024-01-28 21:30:23 -08:00
Marten Seemann
a2cf43d75c
remove the RequireAddressValidation callback from the Config ( #4253 )
2024-01-22 21:24:07 -08:00
Marten Seemann
892851eb8c
add Transport config options to limit the number of handshakes ( #4248 )
...
* add Transport config options to limit the number of handshakes
* fix accounting for failed handshakes
* increase handshake limits, improve documentation
2024-01-22 21:04:25 -08:00
Marten Seemann
594440b04c
don't remove closed connections from the server's accept queue ( #4245 )
2024-01-18 22:45:38 -08:00