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
11b11594b2
http3: fix race condition in client unit test ( #4463 )
2024-04-26 10:32:03 -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
3e7ba77a77
http3: check server SETTINGS before sending an Extended CONNECT request ( #4450 )
2024-04-20 06:21:36 -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
9bc7bd84cc
http3: use a log/slog.Logger for logging ( #4449 )
2024-04-20 01:59:58 -07:00
Marten Seemann
e48e1d465d
http3: simplify response header writing ( #4441 )
2024-04-17 09:44:36 -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
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
183d42a729
http3: pass tracing ID instead of quic.Connection to stream hijackers ( #4401 )
...
The stream hijackers only need to be able to associate the stream with
the underlying QUIC connection. They are not supposed to call any
functions on the quic.Connection. As such, the better API is to just
pass them a unique identifier.
2024-04-01 21:23:40 -07:00
Marten Seemann
268208fbef
http3: refactor the client's and server's unidirectional stream handling ( #4387 )
...
The logic is almost identical, so it makes sense to refactor it into
a shared implementation.
2024-03-24 13:52:44 -07:00
Marten Seemann
684b80a23f
http3: don't modify any fields of the http.Request when doing 0-RTT ( #4379 )
2024-03-23 13:58:41 -07:00
Marten Seemann
603e07779a
http3: make it possible to send HEAD requests in 0-RTT ( #4378 )
2024-03-23 08:24:09 +10: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
c5f7096f00
http3: reject duplicate control streams opened by the server ( #4342 )
2024-03-02 23:28:24 -08:00
Marten Seemann
fbaa941ea1
protocol: rename VersionNumber to Version ( #4295 )
2024-01-31 21:57:33 -08:00
Marten Seemann
2243fdefbf
http3: return the context cancellation error from RoundTrip ( #4203 )
2023-12-20 20:16:30 -08:00
Marten Seemann
a263164d9f
use new gomock feature to generate type-safe methods in mocks ( #4057 )
2023-10-20 22:55:33 -07:00
Marten Seemann
2797f85fc0
switch from unmaintained golang/mock to go.uber.org/mock ( #4050 )
2023-08-28 02:23:55 -07:00
Marten Seemann
bb296b8c17
http3: unify handling of request and response headers ( #3969 )
2023-07-18 21:39:05 -07:00
Marten Seemann
3dea8f8a9b
http3: don't send more than http.Request.ContentLength bytes ( #3960 )
2023-07-16 19:16:52 -07:00
Marten Seemann
21388c86bb
drop support for draft-29 ( #3903 )
2023-06-21 04:06:44 -07:00
Glonee
21549fcb4a
http3: set tls.Config.ServerName for outgoing requests, if unset ( #3867 )
...
* fix #3865
* add test case
* Update http3/client, client_test.go
Co-authored-by: Marten Seemann <martenseemann@gmail.com >
---------
Co-authored-by: Marten Seemann <martenseemann@gmail.com >
2023-05-31 22:45:56 -07:00
Marten Seemann
2b0a03a988
set the QUIC version for integration tests using a command line flag
2023-05-01 13:43:34 +02:00
Jean-Francois Giorgi
af517bdef1
http3: make error codes public and consistent with http2 package ( #3744 )
...
* make http3 error codes public and consistent with http2 package
* typo on ErrNoError
* renaming of ErrCode values
2023-04-07 21:53:14 -07:00
Marten Seemann
a4b0265628
use a chan instead of a context in Connection.HandshakeComplete ( #3709 )
2023-03-26 06:51:56 -07:00
Marten Seemann
04c3fd0756
deprecate quicvarint.Write in favor of quicvarint.Append ( #3690 )
2023-02-13 02:52:25 -08:00
Marten Seemann
89769f409f
http3: correctly handle closed clients ( #3684 )
...
* http3: use a mock roundTripCloser in tests
* http3: correctly handle failed clients
Specifically,
* immediately remove a client when a request errored
* if that error was an idle error, and the client was a reused client
(from an earlier request that already completed the handshake),
re-dial the connection
2023-01-28 00:49:52 -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
9488539a49
update imports to use qtls and qpack from quic-go GitHub organization ( #3676 )
2023-01-20 13:42:54 -08:00
David Brouwer
047f9b6ffa
http3: add request to response ( #3608 )
2022-11-02 13:39:34 -07:00
Marten Seemann
870fbe7ab0
migrate to Ginkgo v2
2022-10-11 16:38:44 +04:00
Marten Seemann
c75bf49422
http3: expose ALPN values ( #3580 )
2022-10-11 04:27:49 -07:00
Marten Seemann
424a66389c
http3: fix double close of chan when using DontCloseRequestStream ( #3561 )
2022-09-23 03:10:25 -07:00
Marten Seemann
62b82789c0
http3: reduce usage of bytes.Buffer ( #3539 )
2022-09-01 06:39:21 -07:00
Marten Seemann
498475fa60
update golangci-lint action to v3, golangci-lint to v1.48.0 ( #3499 )
...
* run gofmt -s -w
* stop using the deprecated io/ioutil package
* update golangci-lint action to v3, golangci-lint to v1.48.0
2022-08-10 09:50:48 -07:00
Marten Seemann
61ca8e89fe
http3: ignore context after response when using DontCloseRequestStream ( #3473 )
2022-07-24 11:58:12 -07:00
Marten Seemann
6fbc6d951a
fix flaky HTTP/3 request body test ( #3447 )
2022-06-09 11:32:20 -07:00
Marten Seemann
04d46526c7
refactor HTTP/3 stream handling to use a dedicated stream
...
Reading from and writing onto this stream applies HTTP/3 DATA framing.
2022-06-09 10:51:23 +02:00
Aaron Riekenberg
990b1fed38
Change "HTTP/3" to "HTTP/3.0". ( #3439 )
2022-06-02 10:33:06 -07:00
Marten Seemann
96c0daceca
pass frame / stream type parsing errors to the hijacker callbacks
...
When a stream is reset, we might not have received the frame / stream
type yet. The callback might be able to identify if it was a stream
intended for that application by analyzing the stream reset error.
2022-05-27 17:53:54 +02:00
Marten Seemann
3088865952
add test for bidirectional stream hijacker ( #3434 )
...
Co-authored-by: hareku <hareku908@gmail.com >
2022-05-27 03:38:00 -07:00
Marten Seemann
de5f08171b
introduce a http3.RoundTripOpt to prevent closing of request stream ( #3411 )
2022-05-20 02:54:31 -07:00
hareku
1a0d577854
implement HTTP/3 unidirectional stream hijacking ( #3389 )
...
* implement HTTP/3 unistream hijacking
* Apply suggestions from code review
Fixed name consistency.
Co-authored-by: Marten Seemann <martenseemann@gmail.com >
* rename unistream to unidirectional stream
Co-authored-by: Marten Seemann <martenseemann@gmail.com >
2022-04-21 09:51:18 -07:00
Marten Seemann
ff6313fdb3
make the responseWriter hijackable
2022-04-03 14:28:15 +01:00
Marten Seemann
48a2cce9df
implement HTTP/3 stream hijacking
2022-04-03 14:28:15 +01:00
Marten Seemann
a54816867f
make it possible to set settings unknown to the http3 package
2022-04-03 14:28:15 +01:00
Marten Seemann
332473668a
remove unneeded network from custom dial function used in HTTP/3 ( #3368 )
2022-04-03 06:27:55 -07:00
Marten Seemann
6aaa9a817c
rename the EarlySession to EarlyConnection
2022-03-27 11:27:25 +01:00