Commit graph

43 commits

Author SHA1 Message Date
Marten Seemann
f51cc93770 drop support for QUIC draft version 32 and 34 2021-07-06 09:50:10 -07:00
Marten Seemann
68da2c4468 add support for QUIC v1, RFC 9000 2021-05-29 11:56:14 -07:00
Marten Seemann
90727cb41a introduce a quic.StreamError type and use it for stream cancelations 2021-05-01 09:39:52 +07:00
Marten Seemann
42b61729bd expose the TransportError and the ApplicationError 2021-05-01 09:38:49 +07:00
Marten Seemann
29f02e1bda set the Content-Length for HTTP/3 responses 2021-03-15 13:09:09 +08:00
Marten Seemann
6f32d2df1d don't reset the QPACK encoder / decoder streams
We don't need these streams, since our QPACK implementation doesn't use the
dynamic table yet. However, we MUST NOT close / reset these streams. Instead,
just ignore them.
2021-03-04 11:14:00 +08:00
Marten Seemann
35939b25a9 allow access to the underlying quic.Stream from a http.ResponseWriter 2021-01-17 14:35:21 +08:00
Marten Seemann
f9226887b4 rename ReadVarint / WriteVarInt / VarIntLen to Read / Write / Len 2021-01-02 00:15:07 +08:00
Marten Seemann
11c5045065 move varint encoding / decoding to a separate package
... which is not internal.
2021-01-01 11:46:45 +08:00
Marten Seemann
b47fe87e51
Merge pull request #2952 from lucas-clemente/reset-h3-uni-stream-when-type-unknown
cancel reading on unidirectional streams when the stream type is unknown
2020-12-29 07:42:24 +07:00
Marten Seemann
7e4ac36b2f remove duplicate check of the URL scheme in the HTTP/3 client
There's already a check like this performed in the http3.RoundTripper.
2020-12-25 13:15:53 +07:00
Marten Seemann
b753005137 check that QUIC layer negotiated datagram support when handing SETTINGS 2020-12-23 15:06:04 +07:00
Marten Seemann
3cb07d8f00 add a http3.RoundTripper.EnableDatagram option 2020-12-23 15:06:04 +07:00
Marten Seemann
160c11bd34 cancel reading on unidirectional streams when the stream type is unknown
Otherwise the stream would remain open indefinitely.
2020-12-23 15:00:01 +07:00
Marten Seemann
f68dfd5c3b
Merge pull request #2949 from lucas-clemente/http3-control-streams
implement HTTP/3 control stream handling
2020-12-23 14:58:51 +07:00
Marten Seemann
808671e2d4 accept the control stream and parse SETTINGS frame, for the H3 client 2020-12-23 14:49:41 +07:00
Marten Seemann
f92b0ec74a make the HTTP/3 client request tests more strict 2020-12-23 14:47:16 +07:00
Marten Seemann
4c6496bc0e simplify Read and Write mock calls in http3 tests 2020-12-21 14:41:22 +07:00
Marten Seemann
356c69944e return a quic.ConnectionState from Session.ConnectionState() 2020-12-09 15:31:23 +07:00
Marten Seemann
898f484d0a only allow the HTTP/3 client to dial with a single QUIC version 2020-11-02 11:29:42 +07:00
Marten Seemann
30c91149c2 fill out the http.Response.TLS field 2020-11-02 11:29:42 +07:00
Marten Seemann
c968b18a21 select the H3 ALPN based on the QUIC version in use (for the H3 server) 2020-10-29 13:44:23 +07:00
Marten Seemann
bcffb77ad4 use a buffered writer for the http3 request writer 2020-04-02 15:15:29 +07:00
Marten Seemann
683230372e use a buffered writer for the http3 response writer 2020-04-02 15:15:29 +07:00
Lorenzo Saino
8db2288382 Make http3.client.Close() succeed if session was not started
Invoking http3.client.Close() before client.dial() is invoked
causes a segmentation fault. That occurs because, in this
circumstance, invoking client.Close() results in invoking
client.session.CloseWithError(...) while client.session is nil.

This commit changes the behavior of
http3.client.Close() to return nil if client.session
is nil and adds an associated test case.
2020-02-23 00:21:19 +00:00
Marten Seemann
91543322f6 define a new Method for 0-RTT GET requests on the http.Request 2020-01-29 11:34:06 +07:00
Marten Seemann
af1e8f4c78 handle request cancelations while waiting for handshake completion 2020-01-29 11:25:29 +07:00
Marten Seemann
1372e5dd5e use 0-RTT to open the H3 client's control stream 2020-01-29 11:06:44 +07:00
Marten Seemann
bc25840519 use 0.5-RTT data to open the control stream in the http3 server 2020-01-29 10:40:06 +07:00
Marten Seemann
d2209ba553 use the HTTP request context when opening the request stream 2020-01-26 11:33:22 +07:00
Marten Seemann
27549c5665 use the minimum of the two peers' max_idle_timeouts 2019-12-11 14:04:33 +04:00
Marten Seemann
ea0050e2a2 update HTTP/3 errors
* rename HTTP_UNEXPECTED_FRAME to HTTP_FRAME_UNEXPECTED
* remove the HTTP_WRONG_STREAM error
* rename errors from HTTP_ to H3_
2019-10-23 09:43:47 +07:00
Marten Seemann
772cf9facd fix flaky HTTP/3 client unit test 2019-10-13 06:14:49 -07:00
Marten Seemann
393695d774 fix flaky HTTP/3 client unit test 2019-10-01 10:14:21 +07:00
Marten Seemann
b6330461d6 rework stream / connection erros for the client 2019-09-14 10:26:56 +07:00
Marten Seemann
ab65e39c3b
Merge pull request #2091 from lucas-clemente/request-cancelation
implement HTTP request cancelations
2019-08-31 17:32:25 +07:00
Marten Seemann
fd30146de5 replace the list of ALPN instead of appending to it in http3 2019-08-24 15:22:36 +07:00
Marten Seemann
0a298f2aef implement client-side request cancelations 2019-08-24 09:47:49 +07:00
Marten Seemann
363de010ca reject http3 responses that exceeded the header size limit 2019-08-22 12:08:02 +07:00
Marten Seemann
2b8cece60a add a context to Session.Open{Uni}StreamSync 2019-06-22 19:37:21 +08:00
Marten Seemann
afa4615c4d make sure the TLS config contains the H3 ALPN token in server and client 2019-05-20 17:55:59 +01:00
Marten Seemann
de6ab88437 add support for gzipped HTTP/3 requests 2019-04-16 17:26:03 +09:00
Marten Seemann
4f6d0e651a implement HTTP/3 2019-04-11 09:06:10 +09:00