Commit Graph

129 Commits

Author SHA1 Message Date
市川恭佑 (ebi)
59958e5282 fix typo *connections (#3309) 2022-01-01 23:10:01 -08:00
Aaron Riekenberg
afbe993b4c Add test setting http3.Server.Port. 2021-09-19 15:51:09 -05:00
Aaron Riekenberg
43ee0c6757 Export http3.Server.Port. 2021-09-18 10:29:37 -05:00
Aaron Riekenberg
8b56e7d2b5 Revert "Allow use of custom port value in Alt-Svc header."
This reverts commit ce8167c3cf.
2021-09-18 10:22:57 -05:00
Aaron Riekenberg
ce8167c3cf Allow use of custom port value in Alt-Svc header. 2021-09-11 10:43:37 -05:00
Randy Reddig
346bd63a60 quicvarint: add Reader and Writer interfaces (#3233) 2021-08-05 10:49:17 -07:00
Marten Seemann
f51cc93770 drop support for QUIC draft version 32 and 34 2021-07-06 09:50:10 -07:00
folbrich
ea33fc95df Update doc for dialer in http3.RoundTripper 2021-06-20 08:47:18 -06:00
Marten Seemann
68da2c4468 add support for QUIC v1, RFC 9000 2021-05-29 11:56:14 -07:00
Marten Seemann
6b771df453 add support for QUIC v1 2021-05-01 10:05:29 +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
b8358dc2bb Merge pull request #3063 from lucas-clemente/dont-reset-qpack-streams
don't reset the QPACK encoder / decoder streams
2021-03-08 18:08:02 +08:00
Kévin Dunglas
3b916f2e80 allow sending 1xx responses (#3047)
Currently, it's not possible to send informational responses such as 103 Early Hints or 102 Processing.

This patch allows calling WriteHeader() multiple times in order to send informational responses before the final one.
It follows the patch for HTTP/1 (golang/go#42597) and HTTP/2 (golang/net#96).

In conformance with RFC 8297, if the status code is 103 the current content of the header map is also sent. Its content is not removed after the call to WriteHeader() because the headers must also be included in the final response.

The Chrome and Fastly teams are starting a large-scale experiment to measure the real-life impact of the 103 status code.
Using Early Hints is proposed as a (partial) alternative to Server Push, which are going to be removed from Chrome: https://groups.google.com/a/chromium.org/g/blink-dev/c/K3rYLvmQUBY/m/21anpFhxAQAJ

Being able to send this status code from servers implemented using Go would help to see if implementing it in browsers is worth it.
2021-03-05 10:03:31 +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
615540f8d5 use the correct HTTP/3 ALPN when using draft-34 2021-02-11 09:46:00 +08:00
Marten Seemann
e4dab7fb37 reenable key updates for HTTP/3
Chrome was recently updated to v88, which is able to handle key updates
correctly.
2021-01-20 14:51:42 +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
4653549266 fix outdated comment for the http3.Server 2021-01-05 11:21:44 +08:00
Marten Seemann
d9c7467b56 Merge pull request #2973 from lucas-clemente/publicize-varint
publicize QUIC varint reading and writing
2021-01-02 12:05:53 +08:00
Marten Seemann
5e7fb50223 Merge pull request #2962 from lucas-clemente/skip-scheme-check
add a http3.RoundTripOpt to skip the request scheme check
2021-01-02 12:05:19 +08:00
Marten Seemann
c78634df38 add a http3.RoundTripOpt to skip the request scheme check
Otherwise, we'll only be able to issue https requests. This is what we
usually want, but for MASQUE support, the URL will be of the form
masque://example.org.
2021-01-02 10:21:18 +08:00
Marten Seemann
f9226887b4 rename ReadVarint / WriteVarInt / VarIntLen to Read / Write / Len 2021-01-02 00:15:07 +08:00
Marten Seemann
428bf488d1 remove stray TODO in the http3.Server 2021-01-01 12:50:21 +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
0b0cb7c06f add a http3.Server.EnableDatagram option 2020-12-23 15:06:04 +07:00
Marten Seemann
aaf1d381d3 implement parsing and writing of the H3_DATAGRAM setting 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
04eebb7f6a reject push streams initiated by the client 2020-12-23 14:47:16 +07:00
Marten Seemann
bf54ffe0df accept the control stream and parse SETTINGS frame, for the H3 server 2020-12-23 14:47:14 +07:00
Marten Seemann
f68691b316 Merge pull request #2947 from lucas-clemente/h3-message-error
add the H3_MESSAGE_ERROR
2020-12-22 16:47:47 +07:00
Marten Seemann
4c6496bc0e simplify Read and Write mock calls in http3 tests 2020-12-21 14:41:22 +07:00
Marten Seemann
8a84201ce4 add the H3_MESSAGE_ERROR 2020-12-21 12:04:29 +07:00
Marten Seemann
9693a46d31 Merge pull request #2162 from lucas-clemente/datagram
implement the datagram draft
2020-12-17 11:22:40 +07:00
Marten Seemann
356c69944e return a quic.ConnectionState from Session.ConnectionState() 2020-12-09 15:31:23 +07:00
Marten Seemann
595f6f814a introduce a quic.Config.HandshakeIdleTimeout, remove HandshakeTimeout 2020-12-08 16:12:39 +07:00
Marten Seemann
29f48d8d70 Merge pull request #2906 from lucas-clemente/chrome-compatibility-mode
disable key updates when using HTTP/3 to avoid breaking Chrome 87
2020-12-04 09:23:07 +07:00
Marten Seemann
9f14d82553 fix a crash in the http3.Server when GetConfigForClient returns nil 2020-12-03 16:51:32 +07:00
Marten Seemann
35690c5d46 disable key updates when using HTTP/3 to avoid breaking Chrome 87 2020-11-27 10:38:16 +07:00
Marten Seemann
656490c9b1 explicitly set the supported versions in the HTTP/3 server test 2020-11-02 12:47:40 +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