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
10f8bd4e06
http3: fix race condition between Server.Serve and Server.Close ( #4572 )
2024-06-23 01:13:56 +08: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
82a3847439
http3: fix another flaky Extended CONNECT test ( #4539 )
2024-05-28 22:57:43 -07:00
Marten Seemann
ae90c76822
http3: fix flaky Extended CONNECT unit test ( #4537 )
2024-05-27 21:43:01 -07:00
George
e2fbf3cdcd
http3: fix memory leak in stream state tracking ( #4523 )
...
* fix(http3): handle streamStateSendAndReceiveClosed in onStreamStateChange
Signed-off-by: George MacRorie <me@georgemac.com >
* refactor(http3): adjust stateTrackingStream to operate over streamClearer and errorSetter
* test(http3): remove duplicate test case
* chore(http3): rename test spies to be mocks
---------
Signed-off-by: George MacRorie <me@georgemac.com >
2024-05-18 19:15:32 -07:00
Z.SX
f3cecf952e
http3: rename ListenAndServe to ListenAndServeTLS ( #4522 )
...
* http3: rename ListenAndServe to ListenAndServeTLS
* http3: fix golanglint
---------
Co-authored-by: Shunxin Zhang <shunxin.zhang@shopee.com >
2024-05-14 18:32:56 -07:00
Marten Seemann
475b4f02cb
http3: ignore deadline errors when tracking QUIC stream states ( #4495 )
2024-05-06 19:03:41 -07:00
Marten Seemann
5aac43549b
http3: fix race condition when creating state tracking stream ( #4493 )
2024-05-05 06:34:55 -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
a3d36f1cbb
http3: reject reserved frame types ( #4467 )
2024-05-04 15:23:40 -07:00
Robin Thellend
a5adbd44c7
http3: pass original Conn to ConnContext ( #4480 )
...
* http3: Pass original Conn to ConnContext
https://github.com/quic-go/quic-go/issues/4479
* Update test to check conn value
2024-05-03 16:17:39 -07:00
Marten Seemann
3122ca009b
http3: avoid allocation when parsing the datagram's quarter stream ID ( #4478 )
2024-05-03 20:13:38 +08:00
Marten Seemann
8de22b2468
http3: allow io.EOF when parsing a capsule fails on the first byte ( #4476 )
2024-05-03 04:14:18 -07:00
WeidiDeng
93c4785521
http3: sniff Content-Type when flushing the ResponseWriter ( #4412 )
...
* try to sniff content-type as long as the data is not written to the client
* only write when body is allowed
* fix tests
* fix tests
* fix header count
* fix lint
* merge from upstream
* merge updates from master
* Update http3/response_writer.go
Co-authored-by: Marten Seemann <martenseemann@gmail.com >
---------
Co-authored-by: Marten Seemann <martenseemann@gmail.com >
2024-04-27 07:26:21 -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
e1e5b6294d
README: link to the new documentation site ( #4464 )
2024-04-26 11:28:49 -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
11b11594b2
http3: fix race condition in client unit test ( #4463 )
2024-04-26 10:32:03 -07:00
Marten Seemann
6a4512a6f0
http3: fix race condition when closing the RoundTripper ( #4458 )
2024-04-23 13:23:48 -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
George
248189d252
http3: don't remove clients on RoundTripOpt context canceled ( #4448 )
...
* fix(http3): reuse clients on RoundTripOpt context cancelled
Signed-off-by: George MacRorie <me@georgemac.com >
* chore(http3): add comment to context canceled check on roundtrip error
---------
Signed-off-by: George MacRorie <me@georgemac.com >
2024-04-20 01:47:34 -07:00
Marten Seemann
e48e1d465d
http3: simplify response header writing ( #4441 )
2024-04-17 09:44:36 -07:00
Marten Seemann
788b6f4409
http3: fix flaky RoundTripper test ( #4442 )
2024-04-17 09:44:20 -07:00
Marten Seemann
457ac2c4dc
http3: move length limiting logic to the body ( #4439 )
...
The length limit is a property of the (request and response) body. As
such, it's better implemented there than by wrapping the HTTP stream.
2024-04-17 01:26:45 -07:00
Marten Seemann
29785b29bf
http3: simplify tracking of content length ( #4438 )
2024-04-16 06:35:31 -07:00
Marten Seemann
afd0b061d5
http3: remove Accept(Uni)Stream methods from the Connection interface ( #4435 )
...
Incoming streams are hijacked, not accepted.
2024-04-14 08:37:01 -07:00
Marten Seemann
25cd4b5d24
http3: simplify composition of the HTTP stream and request stream ( #4433 )
2024-04-13 17:18:51 -07:00
Marten Seemann
90627f6f7c
http3: simplify buffering of small responses ( #4432 )
2024-04-13 16:46:19 -07:00
Marten Seemann
b096e94092
http3: hide SendDatagram and ReceiveDatagram on the Connection ( #4427 )
...
HTTP datagrams are bound to streams. It shouldn't be possible to send
datagrams on the http3.Connection.
2024-04-11 14:13:34 -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
ee698b326f
http3: cancel reading on request stream if request processing fails ( #4417 )
2024-04-09 13:34: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
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
f389b638d2
http3: reference the correct RFCs in doc comments ( #4399 )
2024-04-01 15:56:23 -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
d540f545b0
http3: reject duplicate QPACK decoder and encoder streams ( #4388 )
2024-03-24 14:17:11 -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
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
7d902549b7
http3: fix capitalization of Server.SetQUICHeaders ( #4377 )
...
Server.SetQuicHeaders is deprecated now, and will be removed at some
point in the future.
2024-03-23 14:24:51 -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