Commit Graph

5755 Commits

Author SHA1 Message Date
Marten Seemann
b659414495 use a single Go routine to send copies of CONNECTION_CLOSE packets 2022-08-21 15:41:47 +03:00
Marten Seemann
c3ab9c4ea9 replace all connection IDs at the same time when connection is closed 2022-08-21 14:09:49 +03:00
Marten Seemann
635dc90475 use bits.OnesCount to determine if a number is a power of two
This should be 3-4x faster than the current implementation.
2022-08-21 13:09:57 +03:00
Marten Seemann
feb94286a5 move the 0-RTT queue to a separate file 2022-08-21 12:46:40 +03:00
Marten Seemann
19c6a1b252 use type assertions to identify 0-RTT queues in packet handler map 2022-08-21 12:44:40 +03:00
fanweixiao
57650fca7a add YoMo to list of projects in README (#3513) 2022-08-21 02:05:11 -07:00
mojatter
dd521c0573 http3: fix listening on both QUIC and TCP (#3465) 2022-08-20 08:56:28 -07:00
Benedikt Spies
7da024da5a Disable anti-amplification limit by address validation token (#3326) 2022-08-20 08:02:17 -07:00
Marten Seemann
8c0c481da1 fix typo in README 2022-08-14 01:38:58 -07:00
Marten Seemann
9957668d43 Merge pull request #3501 from lucas-clemente/new-address-validation-api
implement a new API to let servers control client address verification
2022-08-13 17:00:01 +02:00
Marten Seemann
bbfb7bd493 disable address validation by default
We should provide safe defaults. Since we implement the 3x amplification
limit, disabling address validation is not unsafe, and will save 1 RTT
for every handshake for applications that don't explicitely configure
Retries.
2022-08-13 17:42:46 +03:00
Marten Seemann
7fde609eef make sure RunHandshake has returned before closing, improve MITM tests 2022-08-13 17:42:45 +03:00
Marten Seemann
f2fa98c0dd implement a more intuitive address validation API 2022-08-12 13:13:29 +03:00
Marten Seemann
556a6e2f99 Merge pull request #3489 from lucas-clemente/generic-streams-map-incoming
use a generic streams map for incoming streams
2022-08-12 13:05:53 +04:00
Abirdcfly
dbb7a215a0 fix unreachable code after log.Fatal in fuzzing corpus generator (#3496)
Signed-off-by: Abirdcfly <fp544037857@gmail.com>

Signed-off-by: Abirdcfly <fp544037857@gmail.com>
2022-08-12 02:02:15 -07:00
Marten Seemann
b372d02ac4 remove genny dependency 2022-08-12 11:18:57 +03:00
Marten Seemann
bea5de0221 Merge pull request #3483 from lucas-clemente/generic-min-max
use generic Min and Max functions
2022-08-12 12:09:30 +04:00
Marten Seemann
5473b3ffd0 add QPACK (RFC 9204) to the list of supported RFCs (#3485) 2022-08-11 07:35:19 -07:00
Marten Seemann
80fd1b57c8 add a function to distinguish between long and short header packets (#3498) 2022-08-11 07:35:01 -07:00
Marten Seemann
621e9d4642 use a generic streams map for incoming streams 2022-08-11 18:31:45 +04:00
Marten Seemann
bebff462c8 use a generic streams map for outgoing streams (#3488) 2022-08-11 05:14:52 -07:00
Marten Seemann
b6e2608c15 update the Go 1.19 qtls to v0.1.0 (#3490) 2022-08-10 09:53:32 -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
7ebe1430ef use a generic linked list (#3487) 2022-08-10 09:50:21 -07:00
Marten Seemann
43bde14cf7 implement generic Min and Max functions 2022-08-10 14:59:05 +02:00
Marten Seemann
424325af58 rename utils.Min to utils.MinInt 2022-08-10 14:59:05 +02:00
Marten Seemann
2ea21b7b16 rename utils.Max to utils.MaxInt 2022-08-10 14:59:05 +02:00
Marten Seemann
ea9de26ed5 drop support for Go 1.16 and 1.17 (#3482) 2022-08-10 03:42:14 -07:00
Toby
d5efd340c7 optimize FirstOutstanding in the sent packet history (#3467)
* optimize FirstOutstanding

* fix variable naming

* bug fix

* minor code improvements

* add a test to make sure that `Iterate` iterates in the right order

* add comment
2022-07-24 12:50:41 -07:00
Marten Seemann
56a24f3e4c update supported RFCs in README (#3456) v0.28.1 2022-07-24 11:58:43 -07:00
Marten Seemann
61ca8e89fe http3: ignore context after response when using DontCloseRequestStream (#3473) 2022-07-24 11:58:12 -07:00
Marten Seemann
f29dd273b4 update for Go 1.19beta1 (#3460) v0.28.0 2022-06-28 01:12:44 -07:00
Matt Robenolt
98b25879e5 dedupe Alt-Svc header values (#3461) 2022-06-28 00:58:44 -07:00
Nuno Diegues
706a482340 only set DF for sockets that can handle it (#3448)
Fixes #3445
2022-06-19 10:38:34 -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
9e1dfff3f0 Merge pull request #3437 from lucas-clemente/http-stream
allow HTTP clients and servers to take over the request stream
2022-06-09 15:51:21 +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
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