Commit Graph

5707 Commits

Author SHA1 Message Date
Marten Seemann
ccf897e519 remove the http3.DataStreamer (#3435) 2022-06-09 01:17:43 -07:00
Marten Seemann
e27fa1c9cf update qtls to include the recent session ticket changes to crypto/tls (#3443)
This includes the changes released in Go 1.18.3 and Go 1.17.11.
2022-06-09 09:24:04 +02:00
Marten Seemann
9dfe9d5109 always reset header buffer, even when QPACK encoding fails (#3436) 2022-06-09 09:23:42 +02:00
Aaron Riekenberg
990b1fed38 Change "HTTP/3" to "HTTP/3.0". (#3439) 2022-06-02 10:33:06 -07:00
Marten Seemann
b5ef99a32c remove stray http3 connection file
This was accidentally commited in #3411.
2022-05-29 11:26:00 +02:00
Marten Seemann
708eb47cec Merge pull request #3429 from lucas-clemente/stream-hijacker-errors
pass frame / stream type parsing errors to the hijacker callbacks
2022-05-27 18:16:11 +02: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
5cb2e8265c fix handling of unknown frames in the stream hijacker 2022-05-27 17:35:00 +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
9d5de12933 make it possible to parse a varint at the end of a reader (#3428)
An io.Reader can read into the buffer and return the io.EOF in the same
call. In fact, that's how the quic.Stream is implemented.
In that case, we shouldn't return an error from quicvarint.Read,
otherwise the caller won't be able to parse a varint sent just before a
stream was closed.
2022-05-26 10:52:50 -07:00
Marten Seemann
8185d1b4e0 Merge pull request #3424 from lucas-clemente/fix-tls-error-handling2
don't ignore errors that occur when the TLS ClientHello is generated
2022-05-20 13:12:57 +02:00
Marten Seemann
53be3ee500 don't send CONNECTION_CLOSE if error occurred before sending anything 2022-05-20 12:27:00 +02:00
Marten Seemann
c225299c84 handle TLS errors that occur before the ClientHello has been written 2022-05-20 12:27:00 +02:00
Marten Seemann
12d50e6810 tighten typing of channel in the crypto setup 2022-05-20 12:27:00 +02:00
Marten Seemann
2e98150cd4 don't send path MTU probe packets on a timer (#3423) 2022-05-20 03:10:39 -07:00
Marten Seemann
de5f08171b introduce a http3.RoundTripOpt to prevent closing of request stream (#3411) 2022-05-20 02:54:31 -07:00
Marten Seemann
6511723c28 don't close the request stream when http3.DataStreamer was used (#3413) 2022-05-20 02:53:44 -07:00
Ivan Trubach
0ec8ee3cff do not embed http.Server in http3.Server (#3397)
This change removes the embedded http.Server struct from http3.Server.
It slightly changes some error behavior, in particular, it mandates
TLSConfig for methods that create QUIC listeners.

Before this change, only Addr, TLSConfig, Handler and MaxHeaderBytes
options were used from the http.Server. These are now defined directly
in http3.Server with an improved documentation.
2022-05-20 02:53:23 -07:00
Chao Fei
60bbe92194 remove error return value from ComposeVersionNegotiation (#3410) 2022-05-12 08:03:39 -07:00
Chao Fei
b9a77af8f9 don't set receive buffer if it is already large enough (#3407) 2022-05-12 04:24:37 -07:00
Didrik Nordström
d39a33f921 clone TLS conf in newClient (#3400)
Fixes #3394
2022-05-12 03:27:25 -07:00
hareku
0a08d62dea remove warning comments of stable implementation (#3399) 2022-05-05 01:45:54 -07:00
Marten Seemann
5dedb7e12c fix parsing of request path for Extended CONNECT requests (#3388) 2022-04-25 04:20:58 -07:00
Marten Seemann
d5961e9d60 update docs to reflect that we support RFC 9221 (Unreliable Datagrams) (#3382) 2022-04-25 04:10:51 -07:00
Marten Seemann
21eda36971 fix deadlock on concurrent http3.Server.Serve and Close calls (#3387) 2022-04-25 04:10:39 -07:00
Marten Seemann
a6a9b2494b reduce flakiness of deadline integration tests (#3383) 2022-04-25 04:00:33 -07:00
Marten Seemann
8bcb6337d1 protect against concurrent use of Stream.Write (#3381) 2022-04-25 03:58:24 -07:00
Marten Seemann
ec118e440c protect against concurrent use of Stream.Read (#3380) 2022-04-25 03:58:11 -07:00
hareku
823c609be4 Expose quic server closed err (#3395)
* expose quic server closed error

* http3.Server's serving method returns http.ErrServerClosed when quic listener is closed

* Revert "http3.Server's serving method returns http.ErrServerClosed when quic listener is closed"

This reverts commit fb1f244440.
2022-04-25 03:10:55 -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
6d4a694183 add LocalAddr and RemoteAddr functions to http3.StreamCreator (#3384) 2022-04-16 06:09:01 -07:00
Marten Seemann
21160a02ff Merge pull request #3362 from lucas-clemente/webtransport
extend the HTTP/3 API for WebTransport support
2022-04-16 13:51:25 +01:00
Marten Seemann
ff6313fdb3 make the responseWriter hijackable 2022-04-03 14:28:15 +01:00
Marten Seemann
a983db0301 pass the connection to the client's StreamHijacker callback 2022-04-03 14:28:15 +01:00
Marten Seemann
448e8bcf05 add a stream ID getter function to the body 2022-04-03 14:28:15 +01:00
Marten Seemann
eddb2b819a add a stream ID getter function to the responseWriter 2022-04-03 14:28:15 +01:00
Marten Seemann
9c8cdeda57 allow HTTP clients to set the number of incoming streams in quic.Config 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
57461e01b5 add a http3.Hijacker that allows stream creation on a QUIC session from a http.Response.Body 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
fa0dba963a Merge pull request #3367 from lucas-clemente/update-golangci-lint
stop using the deprecated net.Error.Temporary, update golangci-lint to v1.45.2
v0.27.0
2022-04-03 12:43:45 +01:00
Marten Seemann
7c63050da1 remove deprecated scopelint linter from golangci-lint 2022-04-02 20:36:18 +01:00
Marten Seemann
42bfe5aa70 add a nolint directive for the use of net.Error.Temporary when reading from conn 2022-04-02 20:35:43 +01:00
Marten Seemann
4f85f45f0a stop using net.Error.Temporary in tests 2022-04-02 20:31:08 +01:00
Marten Seemann
0c6b3dfa93 run the updated version of gofumpt 2022-04-02 20:18:37 +01:00
Marten Seemann
7265441042 update golangci-lint to v1.45.2 2022-04-02 20:06:16 +01:00
Marten Seemann
d1498c360e add support for serializing Extended CONNECT requests (#3360) 2022-04-02 11:55:42 -07:00
Marten Seemann
26fbf99275 Merge pull request #3364 from lucas-clemente/better-go-version-error
improve the error thrown when building with an unsupported Go version
2022-04-02 19:55:20 +01:00
Marten Seemann
ba697c5838 also throw an error for outdated Go versions 2022-03-30 16:05:21 +01:00