Commit graph

215 commits

Author SHA1 Message Date
Glonee
9237dbb167
http3: close the connection when closing the roundtripper (#3873) 2023-06-01 01:06:13 -07:00
Glonee
c96fbd2e4a
http3: correctly use the quic.Transport (#3869)
* use quic.Transport in http3

* add intergrationtests to dial server with different server names

* update test
2023-05-31 23:31:20 -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
Glonee
cec79d338c
implement http3.RoundTripper.CloseIdleConnections (#3820)
* implement CloseIdleConnections

* nit

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

---------

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
2023-05-15 00:12:00 -07:00
Marten Seemann
7a0ef5f867 make Config.Allow0RTT a bool, not a callback 2023-05-02 15:56:49 +02:00
Marten Seemann
86a1234c87 make EarlyListener a struct, not an interface 2023-05-01 14:41:16 +02:00
Marten Seemann
aee7706d5d clean up dial functions
* add a context to all Dial functions
* remove the explicit Dial{*}Context functions
2023-05-01 13:59:54 +02:00
Marten Seemann
d683b841c4 remove the host parameter from all dial functions 2023-05-01 13:59:54 +02:00
Marten Seemann
2b0a03a988 set the QUIC version for integration tests using a command line flag 2023-05-01 13:43:34 +02:00
Kévin Dunglas
172123c340
http3: add compatibility with net/http.ResponseController (#3790)
* feat: compatibility with "net/http".ResponseController

* better deadline tests

* don't run deadline tests on Go 1.19

* skip deadline tests on Go 1.19
2023-05-01 04:40:33 -07:00
Marten Seemann
c9a2f79b1c
simplify mockgen usage for private interfaces (#3769) 2023-04-19 07:57:00 -07:00
Marten Seemann
1f57d4e789
protocol: remove VersionTLS, used during the gQUIC -> TLS 1.3 transition (#3764) 2023-04-19 07:24:34 -07:00
Jean-Francois Giorgi
3f06880917
http3: check scheme before host to be consistent with net/http (#3774)
* check scheme before host so the error is comprehensible  and consistent with net/http

* Update http3/roundtrip.go

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

---------

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
2023-04-17 02:34:51 -07: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
41ddaa0262
attach the QUIC version to context returned by ClientHelloInfo.Context (#3721) 2023-03-26 22:26:14 +09:00
Glonee
6d7280b7dc
http3: use a single UDPConn in RoundTripper (#3720)
* http3: use a single UDPConn in RoundTripper

* update

* add tests
2023-03-14 18:58:26 -07:00
Glonee
a92238b73c
http3: sniff HTTP Content Type (#3715)
* add sniff

* add test for sniff

* fix typo in comment

* move bodyAllowedForStatus() to top of the function to aviod calling it twice

* add comments

* format with gofumpt

* fix typo and simplify the code
2023-02-20 17:29:45 -08:00
Marten Seemann
e0d4ffffef
http3: fix race condition when accessing the client's connection (#3696)
* http3: fix race condition when accessing the client's connection

* add an integration test for concurrent HTTP requests

---------

Co-authored-by: Bulat Khasanov <afti@yandex.ru>
2023-02-13 14:54:09 -08: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
Avi Rosenberg
7b2c69451e
http3: change status codes to const (#3683)
Signed-off-by: Avi Rosenberg <avrumi96@gmail.com>
2023-01-27 14:40:59 -08:00
mstmdev
bbeea8dca0
http3: use HTTP/2 as the default protocol in ListenAndServe (#3673) 2023-01-23 17:48:35 -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
Marten Seemann
45b489b6f6 make ConnectionState usable during the handshake 2023-01-05 16:37:07 +13:00
Avi Rosenberg
cf1aff0492
http3: simplify if condition in roundtripper (#3658)
Signed-off-by: Avi Rosenberg <avrumi96@gmail.com>

Signed-off-by: Avi Rosenberg <avrumi96@gmail.com>
2023-01-01 12:20:44 -08:00
Marten Seemann
76761598e9
http3: add support for parsing and writing HTTP/3 capsules (#3607) 2022-11-03 10:34:01 -07:00
David Brouwer
047f9b6ffa
http3: add request to response (#3608) 2022-11-02 13:39:34 -07:00
Marten Seemann
e496120c76
http3: add a ConnectionState method to the StreamCreator interface (#3600) 2022-10-22 02:52:30 -07:00
Marten Seemann
85fbfb9405
http3: add a Context method to the StreamCreator interface (#3601) 2022-10-22 02:51:24 -07:00
Marten Seemann
870fbe7ab0 migrate to Ginkgo v2 2022-10-11 16:38:44 +04:00
Marten Seemann
2b5d1281c1
http3: add http3.Server.ServeQUICConn to serve a single QUIC connection (#3587) 2022-10-11 05:07:24 -07:00
Marten Seemann
c75bf49422
http3: expose ALPN values (#3580) 2022-10-11 04:27:49 -07:00
shade34321
a905648480
http3: handle ErrAbortHandler when the handler panics (#3575)
* Handle abort like the stdlib does

* Using the sentinel value from the stdlib instead of redefining.

* we return before logging out

* Added test to hand abort handler

* Added in two tests but apparently only saved the first one.

* remove one test case because it wasn't needed
2022-10-09 07:50:04 -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
mojatter
dd521c0573
http3: fix listening on both QUIC and TCP (#3465) 2022-08-20 08:56:28 -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
Matt Robenolt
98b25879e5
dedupe Alt-Svc header values (#3461) 2022-06-28 00:58:44 -07:00
Marten Seemann
6fbc6d951a
fix flaky HTTP/3 request body test (#3447) 2022-06-09 11:32:20 -07:00
Nuno Diegues
4c96cf75bf
make the keep alive interval configurable (#3444)
* Make keep alive configurable

* Fix unit tests
2022-06-09 08:31:37 -07:00
Marten Seemann
619fa9fb44
Merge pull request #3432 from lucas-clemente/quicv2
implement QUIC v2
2022-06-09 15:52:40 +02:00
Marten Seemann
3eed9d1104 don't close the stream if it was hijacked 2022-06-09 10:51:23 +02:00
Marten Seemann
6fa7494c2f add a http3.HTTPStreamer, allowing users to take over the HTTP/3 stream 2022-06-09 10:51:23 +02:00
Marten Seemann
5fd6fa7cae remove the StreamID method on the HTTP/3 response writer 2022-06-09 10:51:23 +02: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
Marten Seemann
ccf897e519
remove the http3.DataStreamer (#3435) 2022-06-09 01:17:43 -07:00
Marten Seemann
9dfe9d5109
always reset header buffer, even when QPACK encoding fails (#3436) 2022-06-09 09:23:42 +02:00