Marten Seemann
82b275212c
handshake: remove unneeded tokenProtector interface ( #4585 )
2024-07-19 21:45:20 -07:00
Marten Seemann
7825250d3f
ci: use Go 1.23rc2 for unit and integration tests ( #4571 )
...
* ci: use Go 1.23rc1 for unit and integration tests
* handshake: avoid using linkname to access crypto/tls.cipherSuiteTLS13ByID
* ci: use use Go 1.23rc2
2024-07-18 10:20:54 -07:00
Marten Seemann
7379f1fd5e
handshake: ignore unknown QUIC events from crypto/tls ( #4577 )
2024-06-28 06:24:50 -07:00
Marten Seemann
07acaad2f7
add context to EarlyConnection.NextConnection, handle handshake failures ( #4551 )
2024-06-04 20:51:54 -07:00
Marten Seemann
459a6f3df9
fix the server's 0-RTT rejection logic when using GetConfigForClient ( #4550 )
2024-06-03 03:42:58 -07:00
Marten Seemann
dea2eafd1d
remove unused function parameter from qtls.SetupConfigForServer ( #4549 )
2024-06-03 00:12:12 -07:00
Marten Seemann
0d1e27d77c
introduce Transport.ConnContext, use client's context on the connection ( #4507 )
...
* introduce Transport.ConnContext, use client's context on the connection
* panic if ConnContext returns nil
2024-05-26 21:30:19 -07:00
Marten Seemann
e41d1f9dd7
logging / qlog: add support for DPLPMTUD ( #4517 )
...
* logging / qlog: add support for DPLPMTUD
* improve the MTU discovery integration test
2024-05-14 02:37:54 -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
4f4da0423f
ci: disable exhaustive linter for test files ( #4499 )
2024-05-06 21:36:22 -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
394aa5640d
flowcontrol: make it possible to call Abandon multiple times ( #4459 )
...
Abandon is called when a RESET_STREAM frame is received, and marks the
bytes between the highest read position and the final offset as
consumed. Making it possible to call Abandon multiple times makes using
this API a bit easier, since the stream doesn't need to track if it
already called it.
2024-04-24 07:06:16 -07:00
bt90
75662469a1
increase send and receive buffer size to 7 MiB ( #4455 )
...
This increases throughput on high-bandwidth connections.
7 MB is the value that WireGuard uses, see
f26efb65f2
for details.
2024-04-23 13:28:14 -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
f1476390f2
update gomock to v0.4.0 ( #4361 )
2024-03-10 18:07:20 -07:00
Marten Seemann
71f5ae5ecb
handshake: optimize AEAD handling for long header sealers and openers ( #4323 )
2024-03-03 04:33:10 -08:00
Marten Seemann
f856163f1e
handshake: embed the mask as an array into the aesHeaderProtector ( #4324 )
2024-03-03 04:32:32 -08:00
Marten Seemann
284996e13c
qtls: protect the tls.ClientSessionCache implementation with a mutex ( #4319 )
...
This prevents a race condition when the underlying ClientSessionCache
provided by the application returns the same session ticket for multiple
connections. Reusing session tickets is explicitly recommended against
by both RFC 8446 and RFC 9001, but it's not forbidden. This fix only
benefits applications that compromise their users' privacy by reusing
session tickets.
2024-02-09 07:47:28 -08:00
Marten Seemann
02e4506c3b
handshake: add benchmarks for the Initial AEAD ( #4320 )
2024-02-08 23:56:46 -08:00
Marten Seemann
013949cda3
ci: update to Go 1.22.0 ( #4312 )
2024-02-07 18:15:56 -08:00
Marten Seemann
c22a3c8e6f
handshake: validate HKDF-Expand-Label against crypto/tls implementation ( #4311 )
...
* handshake: validate HKDF-Expand-Label against crypto/tls implementation
* handshake: add a benchmark for HKDF-Expand-Label
2024-02-04 21:27:21 -08:00
Marten Seemann
198de32ef6
don't enqueue stream for sending on reordered MAX_STREAM_DATA frames ( #4269 )
2024-02-02 22:02:13 -08:00
Marten Seemann
07ec3245bd
logging: add a Close function to the Tracer ( #4298 )
...
* logging: add a Close function to the Tracer
* close the Tracer when the Transport is closed
2024-02-02 21:12:15 -08:00
Marten Seemann
b675e34254
logging: add a Debug function to the Tracer ( #4297 )
2024-02-02 20:21:27 -08:00
Marten Seemann
2fbe713bb6
protocol: don't capitalize Perspective.String ( #4296 )
2024-02-01 15:16:36 -08: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
69ba7acb9f
ackhandler: don't delay ACKs for Initial and Handshake packets ( #4288 )
...
* ackhandler: don't delay ACKs for Initial and Handshake packets
* ackhandler: embed the receivedPacketHistory
2024-01-31 19:13:53 -08:00
Marten Seemann
da25787a3d
testutils: make the package public ( #4290 )
...
This package can be useful outside of quic-go. We're not making any API
guarantees at this point.
2024-01-30 19:00:08 -08:00
Marten Seemann
d330d2e30d
remove unused RTTStats from the received packet handler ( #4287 )
2024-01-30 01:02:30 -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
03ba124241
testutils: add a perspective function parameter to ComposeInitialPacket ( #4276 )
...
Currently not used, but this is useful when crafting Initial packets
sent from the client. No functional change expected.
2024-01-28 21:30:23 -08:00
putyWang
bda5b7e6dc
handshake: fix documentation for updatableAEAD.SetWriteKey ( #4256 )
2024-01-22 19:30:50 -08:00
Marten Seemann
4407c60f04
handshake: unexport Set{Read,Write}Key methods on the cryptoSetup ( #4254 )
...
No functional change expected.
These methods were exported since they were passed to the old qtls API.
2024-01-19 20:44:09 -08:00
Marten Seemann
1e874896cd
wire: improve logging of connection ID retirements ( #4241 )
2024-01-10 21:53:25 -08:00
Marten Seemann
54d6f7dc51
ackhandler: refactor ACK queueing logic ( #4225 )
...
Once an ACK has been queued, there's no need to check futher conditions that
would lead to queueing of an ACK.
2024-01-03 18:39:09 -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
1083d1fb8f
handshake: remove unneeded mutex in cryptoSetup ( #4227 )
2024-01-01 23:52:08 -08:00
Marten Seemann
22b7f7744e
use a ring buffer for the datagram queue ( #4223 )
2023-12-31 20:50:26 -08:00
Marten Seemann
1fce81f8bb
queue up to 32 DATAGRAM frames to send ( #4222 )
2023-12-31 19:58:41 -08:00
Marten Seemann
d6e3f3229f
qtls: remove unneeded type alias for the tls.QUICEncryptionLevel ( #4220 )
...
* qtls: remove unneeded type alias for the tls.QUICEncryptionLevel
* handshake: make cryptoSetup.WriteRecord private
2023-12-28 18:59:56 -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
18c591c75a
utils: use time.Duration.Abs ( #4217 )
...
This function was added in Go 1.19, and covers some corner cases that
our custom implementation didn't.
2023-12-27 20:49:47 -08:00
Marten Seemann
d795250479
drop support for Go 1.20, build on Go 1.22rc1 on CI ( #4195 )
...
* drop support for Go 1.20
* ci: udpate CircleCI to Go 1.21
* qtls: remove unnecessary type aliases
* ci: build using Go 1.22rc1
2023-12-27 20:31:58 -08:00
Benedikt Spies
31a677cacd
qlog: add support for alpn_information event ( #4216 )
...
* qlog chosen alpn
* qlog chosen alpn
* qlog: fix capitalization of ALPN
---------
Co-authored-by: Marten Seemann <martenseemann@gmail.com >
2023-12-25 21:02:47 -08:00
Marten Seemann
6ffb9054a2
fuzzing: add frame validation logic ( #4206 )
2023-12-13 23:09:02 -08:00