Marten Seemann
8c062ae604
use testing.B.Loop in all benchmark tests ( #5285 )
...
go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -category=bloop -fix -test ./...
was used as a starting point.
2025-08-16 12:44:56 +02:00
Marten Seemann
66e5c5ebaa
replace interface{} with any ( #5290 )
...
No functional change expected.
2025-08-16 07:21:18 +02:00
Marten Seemann
0a22da7e03
wire: add support for the min_ack_delay transport parameter ( #5266 )
...
* wire: implement parsing and writing of the min_ack_delay transport parameter
* wire: validate the min_ack_delay transport parameter
2025-07-24 15:43:34 +02:00
Marten Seemann
b69abbaf11
wire: implement parsing and writing of the IMMEDIATE_ACK frame ( #5265 )
2025-07-21 15:56:04 +02:00
Marten Seemann
06e31852cb
wire: implement parsing and writing of the ACK_FREQUENCY frame ( #5264 )
...
* implement parsing and writing of the ACK_FREQUENCY frame
* prevent overflows of Request Max Ack Delay
* fix fuzzer
2025-07-21 15:35:06 +02:00
Jannis Seemann
c2e784aaf2
wire: optimize parsing logic for STREAM, DATAGRAM and ACK frames ( #5227 )
...
ParseOtherFrames-16 148ns ± 4% 150ns ± 3% ~ (p=0.223 n=8+8)
ParseAckFrame-16 302ns ± 2% 298ns ± 3% ~ (p=0.246 n=8+8)
ParseStreamFrame-16 262ns ± 3% 213ns ± 2% -18.61% (p=0.000 n=8+8)
ParseDatagramFrame-16 561ns ± 5% 547ns ± 4% ~ (p=0.105 n=8+8)
2025-07-20 13:14:38 +02:00
Jannis Seemann
893a5941fb
wire: improve frame parsing benchmarks ( #5263 )
...
* Add master-style frame handling benchmarks using type switches
* Fixing styling issue.
* put STREAM frame back
* remove BenchmarkParseStreamAndACK
* use random data for STREAM and DATAGRAM
* improve comment
---------
Co-authored-by: Marten Seemann <martenseemann@gmail.com >
2025-07-18 18:33:04 +02:00
Marten Seemann
aa22706d78
ci: enable the nolintlint linter ( #5221 )
...
This linter helps us find unneeded nolint statements.
2025-06-11 06:52:21 +02:00
Marten Seemann
5d7ee61f5f
wire: add support for the reset_stream_at transport parameter ( #5158 )
2025-05-28 06:30:02 +02:00
Marten Seemann
cb5c3f2aad
implement parsing and writing of RESET_STREAM_AT frames ( #5155 )
...
* implement parsing and writing of RESET_STREAM_AT frames
* wire: add support for parsing RESET_STREAM_AT frames
2025-05-28 05:49:54 +02:00
Marten Seemann
267cca773b
switch from math/rand to math/rand/v2 ( #5045 )
...
* switch from math/rand to math/rand/v2
* switch away from golang.org/x/exp/rand
2025-04-19 09:01:22 +02:00
Marten Seemann
1d8f3f281a
ci: update golangci-lint to v2 ( #5007 )
2025-03-30 07:16:14 +02:00
Marten Seemann
9ca74c7049
wire: correctly handle undefined IPv4 / IPv6 preferred address values ( #4985 )
...
* wire: correctly handle undefined IPv4 / IPv6 preferred address values
* make use of the netip.AddrPort zero value
2025-03-15 05:27:28 +01:00
Marten Seemann
202dddd51e
wire: implement frame classification into probing / non-probing ( #4901 )
...
* wire: implement frame classification into probing / non-probing
* wire: consolidate files
* check if frame is ack eliciting and path probing in frames fuzz test
2025-01-21 14:26:04 +08:00
Marten Seemann
484c0ba7b4
wire: don't allocate an empty data slice for empty STREAM frames ( #4794 )
...
Minor optimization, but it simplifies testing in some cases.
2024-12-24 13:16:32 +08:00
Marten Seemann
672f906a40
wire: migrate tests away from Ginkgo ( #4643 )
...
* wire: translate ACK frame tests
* wire: translate CONNECTION_CLOSE frame tests
* wire: translate DATA_BLOCKED frame tests
* wire: translate DATAGRAM frame tests
* wire: translate HANDSHAKE_DONE frame tests
* wire: translate MAX_DATA frame tests
* wire: translate MAX_STREAM_DATA frame tests
* wire: translate MAX_STREAMS frame tests
* wire: translate NEW_CONNECTION_ID frame tests
* wire: translate NEW_TOKEN frame tests
* wire: translate PATH_CHALLENGE frame tests
* wire: translate PATH_RESPONSE frame tests
* wire: translate PING frame test
* wire: translate RESET_STREAM frame tests
* wire: translate RETIRE_CONNECTION_ID frame tests
* wire: translate STOP_SENDING frame tests
* wire: translate STREAM_DATA_BLOCKED frame tests
* wire: translate STREAMS_BLOCKED frame tests
* wire: translate CRYPTO frame tests
* wire: translate STREAM frame tests
* wire: translate version negotiation tests
* wire: translate header tests
* wire: translate pool tests
* wire: translate frame logging tests
* wire: translate short header tests
* wire: translate framer parser tests
* wire: translate transport parameter tests
2024-09-12 19:27:39 -07:00
Marten Seemann
e737d4a40e
wire: speed up parsing of headers with arbitrary length connection IDs ( #4618 )
...
This is significantly faster:
name old time/op new time/op delta
ArbitraryHeaderParsing/dest_8/_src_10-16 53.8ns ± 2% 27.4ns ± 2% -49.01% (p=0.008 n=5+5)
ArbitraryHeaderParsing/dest_20_/_src_20-16 61.6ns ± 1% 33.3ns ± 3% -46.00% (p=0.008 n=5+5)
ArbitraryHeaderParsing/dest_100_/_src_150-16 90.0ns ± 3% 54.8ns ± 5% -39.09% (p=0.008 n=5+5)
name old alloc/op new alloc/op delta
ArbitraryHeaderParsing/dest_8/_src_10-16 72.0B ± 0% 24.0B ± 0% -66.67% (p=0.008 n=5+5)
ArbitraryHeaderParsing/dest_20_/_src_20-16 96.0B ± 0% 48.0B ± 0% -50.00% (p=0.008 n=5+5)
ArbitraryHeaderParsing/dest_100_/_src_150-16 320B ± 0% 272B ± 0% -15.00% (p=0.008 n=5+5)
name old allocs/op new allocs/op delta
ArbitraryHeaderParsing/dest_8/_src_10-16 3.00 ± 0% 2.00 ± 0% -33.33% (p=0.008 n=5+5)
ArbitraryHeaderParsing/dest_20_/_src_20-16 3.00 ± 0% 2.00 ± 0% -33.33% (p=0.008 n=5+5)
ArbitraryHeaderParsing/dest_100_/_src_150-16 3.00 ± 0% 2.00 ± 0% -33.33% (p=0.008 n=5+5)
2024-08-03 16:50:42 -07:00
Marten Seemann
8451b0afd7
utils: remove scarcely used time helper functions ( #4593 )
2024-07-23 14:16:12 -07:00
Marten Seemann
e179048526
wire: simplify packet number parsing, remove utils.ByteOrder interface ( #4590 )
2024-07-21 14:50:21 -07:00
Marten Seemann
5f8d146836
wire: optimize parsing of long header packets ( #4589 )
2024-07-21 14:22:32 -07:00
Marten Seemann
e90a0d4e03
increase initial packet size to 1280 bytes (for both IPv4 and IPv6) ( #4500 )
2024-05-08 20:55:19 -07:00
Marten Seemann
d1c1f18e4c
wire: write configured value of max_udp_payload_size transport parameter ( #4501 )
2024-05-07 21:30:28 -07:00
Marten Seemann
b4210f8459
wire: reduce allocations when parsing transport parameters ( #4483 )
2024-05-05 05:48:48 -07:00
Marten Seemann
347a4afc51
wire: refactor header parsing to use quicvarint.Parse ( #4481 )
...
* wire: add benchmark tests for initial and retry header parsing
* wire: refactor header parsing to use quicvarint.Parse
* wire: simplify tracking of parsed length for Long Header parsing
2024-05-05 05:48:06 -07:00
Marten Seemann
f12ee48617
wire: use quicvarint.Parse when parsing frames ( #4484 )
...
* wire: add benchmarks for the frame parser
* wire: use quicvarint.Parse when parsing frames
* wire: always use io.EOF for too short frames
2024-05-05 04:28:28 -07:00
Marten Seemann
1514095afb
wire: use quicvarint.Parse to when parsing transport parameters ( #4482 )
...
* wire: add a benchmark for parsing of transport parameters
* wire: use quicvarint.Parse to when parsing transport parameters
2024-05-05 04:26:51 -07:00
Marten Seemann
6325696fde
quicvarint: use int return value instead of internal protocol.ByteCount ( #4356 )
2024-03-19 14:56:55 -07:00
Marten Seemann
0582e931a5
wire: optimize generation of Version Negotiation packets ( #4278 )
...
* wire: optimize generation of Version Negotiation packets
* protocol: optimize adding greased version numbers
2024-01-31 23:54:04 -08:00
Marten Seemann
fbaa941ea1
protocol: rename VersionNumber to Version ( #4295 )
2024-01-31 21:57:33 -08:00
Marten Seemann
be4838bd64
wire: remove FrameParser interface, expose FrameParser struct ( #4284 )
...
Instead, expose the FrameParser struct. This allows us to embed it
directly into the connection struct, avoiding a pointer indirection.
2024-01-28 22:34:28 -08:00
Marten Seemann
1e874896cd
wire: improve logging of connection ID retirements ( #4241 )
2024-01-10 21:53:25 -08:00
Marten Seemann
8cad3d2ea5
wire: use netip.AddrPort to encode the IPs in the Preferred Address ( #4232 )
2024-01-02 21:56:25 -08:00
Marten Seemann
22411e16d5
utils: switch to standard library min and max functions ( #4218 )
...
These functions were added in Go 1.21.
2023-12-27 21:19:13 -08:00
Marten Seemann
6ffb9054a2
fuzzing: add frame validation logic ( #4206 )
2023-12-13 23:09:02 -08:00
chungthuang
7b9d21fbe6
send large max_datagram_frame size, introduce a DatagramTooLargeError error ( #4143 )
...
The size can be overwritten to a lower value for testing.
2023-12-02 06:27:15 -08:00
Marten Seemann
2d7ea37672
wire: reject NEW_CONNECTION_ID frames with zero-length conneciton IDs ( #4180 )
2023-11-23 02:41:12 -08:00
Marten Seemann
ced65c0ddc
wire: always set the QUIC bit for Version Negotiation packets ( #3991 )
...
* wire: always set the QUIC bit for Version Negotiation packets
* Update internal/wire/version_negotiation_test.go
2023-08-20 19:55:57 -07:00
Marten Seemann
fe3c4f271d
add a method to retrieve non-QUIC packets from the Transport ( #3992 )
2023-08-19 01:19:17 -07:00
Ameagari
6880f88089
save the max_datagram_frame_size transport parameter in the session ticket ( #4013 )
...
* Add MaxDatagramFrameSize parameter in session ticket
* fix gofumpt issues
* Update integrationtests/self/zero_rtt_test.go
Co-authored-by: Marten Seemann <martenseemann@gmail.com >
* fix: correct comparsion of max_datagram_frame_size
* test: use constant MaxDatagramFrameSize for session ticket test
* fix grammar
---------
Co-authored-by: Marten Seemann <martenseemann@gmail.com >
2023-08-18 19:16:16 -07:00
Ameagari
1c47ebefc0
check transport parameters after 0-RTT resumption ( #3985 )
...
* check new transport parameters do not contain redueced limits
* redefine ValidForUpdate and add tests
* fix test assertion and update comment
2023-08-01 18:34:42 -07:00
Marten Seemann
0662afba63
stop using math/rand.Seed and Read in tests, bump go.mod version to 1.20 ( #3936 )
2023-07-01 11:29:41 -07:00
Marten Seemann
21388c86bb
drop support for draft-29 ( #3903 )
2023-06-21 04:06:44 -07:00
Marten Seemann
28d5106a1c
wire: switch to crypto/rand for greased transport parameter generation ( #3904 )
2023-06-20 09:31:12 -07:00
Marten Seemann
7ea6dc991f
use the same ACK frame struct in the send path, remove ACK frame pool ( #3831 )
2023-06-02 08:34:27 -07:00
Marten Seemann
a595d34557
use a single ACK frame in the receive path
2023-06-02 17:21:46 +03:00
Marten Seemann
fce0261c34
wire: apply the default value for the active_connection_id_limit ( #3806 )
2023-05-28 11:45:46 -07:00
Marten Seemann
378e3c8b74
wire: save ECN counts on the ACK frame ( #3829 )
2023-05-28 16:36:38 +03:00
Sukun
cb3453db25
fix comment claiming ParseConnectionID reuses the data slice ( #3848 )
2023-05-21 07:54:50 -07:00
Marten Seemann
a519d827d1
wire: use a dedicated rand.Rand for greasing transport parameters ( #3758 )
...
rand.Seed is deprecated since Go 1.20. This change also reduces
(potential) lock contention when obtaining random numbers / bytes.
2023-04-19 06:21:25 -07:00
Marten Seemann
f36690ae9c
protocol: remove VersionWhatever, previously used for testing ( #3763 )
2023-04-19 06:19:27 -07:00