Commit Graph

96 Commits

Author SHA1 Message Date
Marten Seemann
40a768e77b flowcontrol: avoid calling time.Now(), pass time as a function parameter (#4731) 2024-11-28 17:46:22 +08:00
Marten Seemann
3e0a67b247 ci: update golangci-lint to v1.62.0 (#4725) 2024-11-18 16:01:39 +01:00
Marten Seemann
0b033db188 fix logging of short header connection IDs (#4626) 2024-08-06 17:28:40 -07:00
Marten Seemann
af9fa7a555 queue stream-related control frames in the respective stream (#4610)
* use a separate method for queueing control frames from the streams map

* queue stream-related control frames in the respective stream
2024-08-04 15:42:56 -07:00
Marten Seemann
f96923b5b2 logging: rename VersionNumber to Version (#4621) 2024-08-03 19:32:11 -07:00
Marten Seemann
9b70412b0f remove mock TokenStore implementation (#4597)
No functional change expected.
2024-07-24 16:28:01 -07:00
Marten Seemann
5f8d146836 wire: optimize parsing of long header packets (#4589) 2024-07-21 14:22:32 -07:00
Marten Seemann
44e0147f2e pass a context to Transport.ConnContext (#4536)
* pass a context to Transport.ConnContext

This context is cancelled when the QUIC connection is closed, or when
the QUIC handshake fails. This allows the application to easily build
and garbage collect a map of active connections.

* correctly handle fresh contexts returned from ConnContext
2024-06-04 21:37:18 -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
2557fb98b2 initialize the MTU discoverer when processing the transport parameters (#4514)
On the client side, we always use the configured packet size. This comes
with the risk of failing the handshake if the path doesn't support this
MTU. If the server sends a max_udp_payload_size that's smaller than this
size, we can safely ignore this: Obviously, the server still processed
the (fully padded) Initial packet, despite claiming that it wouldn't do
so.

On the server side, there's no downside to using 1200 bytes until we
received the client's transport parameters:
* If the first packet didn't contain the entire ClientHello, all we can
do is ACK that packet. We don't need a lot of bytes for that.
* If it did, we will have processed the transport parameters and
initialized the MTU discoverer.
2024-05-13 22:50:26 -07:00
Marten Seemann
4f4da0423f ci: disable exhaustive linter for test files (#4499) 2024-05-06 21:36:22 -07:00
Marten Seemann
b7a02137f9 fix capture of loop variable in connection probe packet tests (#4486) 2024-05-04 15:49:10 -07:00
Marten Seemann
c0250ce824 include the maximum payload size in the DatagramTooLargeError (#4470)
This is more useful than the maximum frame size. The user of the library
shouldn't have to care about the QUIC framing layer.

---------

Co-authored-by: 世界 <i@sekai.icu>
2024-04-27 05:54:16 -07:00
Marten Seemann
b0eb608180 testutils: add a token parameter to ComposeInitialPacket (#4391) 2024-04-23 13:43:28 -07:00
Marten Seemann
f1476390f2 update gomock to v0.4.0 (#4361) 2024-03-10 18:07:20 -07:00
Marten Seemann
c786a46f42 remove unused perspective arg from packetHandlerMap.ReplaceWithClosed (#4330) 2024-02-10 19:27:51 -08:00
Marten Seemann
fbaa941ea1 protocol: rename VersionNumber to Version (#4295) 2024-01-31 21:57:33 -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
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
Marten Seemann
a2cf43d75c remove the RequireAddressValidation callback from the Config (#4253) 2024-01-22 21:24:07 -08:00
Marten Seemann
b3eb375bc1 remove shutdown method on the Connection (#4249)
There's no need to have a dedicated shutdown method, as the use case
(shutting down an outgoing connection attempt on context cancellation)
can be achieved by using Connection.destroy.
2024-01-18 22:06:04 -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
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
3bf2e19d0d logging: pass the packet number to ConnectionTracer.DroppedPacket (#4171)
In most cases the packet number is not known when a packet is dropped,
but it's useful to log the packet number when dropping a duplicate
packet.
2023-11-17 04:11:16 -08:00
Marten Seemann
a263164d9f use new gomock feature to generate type-safe methods in mocks (#4057) 2023-10-20 22:55:33 -07:00
Marten Seemann
9b82196578 make the logging.Tracer and logging.ConnectionTracer a struct (#4082) 2023-09-16 04:58:51 -07:00
Marten Seemann
862e64c7b9 add a Transport config option for the key used to encrypt tokens (#4066)
* add a Transport config option for the key used to encrypt tokens

* handshake: remove unused error return values
2023-09-15 18:33:57 +07:00
Marten Seemann
b6ce91bfe7 stop appending to a GSO batch when the ECN marking changes 2023-09-11 21:14:53 +07:00
Marten Seemann
ad63e2a40a trace and qlog the ECN marking on sent and received packets 2023-09-11 20:31:50 +07:00
Marten Seemann
bed8ebbd4c distinguish coalesced and 1-RTT packets when determining ECN mode 2023-09-11 20:31:50 +07:00
Marten Seemann
5dd6d91c11 send and track packets with ECN markings 2023-09-11 20:31:50 +07:00
Marten Seemann
e1fcac3e46 set the handshake timeout to twice the handshake idle timeout (#4063) 2023-09-09 06:12:37 -07:00
Marten Seemann
54b76ceb3e ackhandler: use the receive time of the Retry packet for RTT estimation (#4070) 2023-09-09 06:12:19 -07:00
Marten Seemann
090e505aa9 move GSO control message handling to the oobConn (#4056)
* move GSO control message handling to the oobConn

* disable OOB test on Windows

* improve GSO tests

* update ooConn.WritePacket comment
2023-08-31 00:49:27 -07:00
Marten Seemann
2797f85fc0 switch from unmaintained golang/mock to go.uber.org/mock (#4050) 2023-08-28 02:23:55 -07:00
Marten Seemann
8f34488c76 fix flaky version negotiation connection unit test (#4052) 2023-08-26 21:53:07 -07:00
Marten Seemann
aab4d4e410 fix handling of ACK frames serialized after CRYPTO frames (#4018) 2023-08-05 18:48:53 -04: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
469a6153b6 use a synchronous API for the crypto setup (#3939) 2023-07-21 10:00:42 -07:00
Ferdinand Holzer
4378283f95 surface connection error as connection context cancelation cause (#3961)
* connection: surface connection error as connection context cancellation cause

* docs: add note about connection context canellation cause
2023-07-17 21:31:31 -07:00
Marten Seemann
3d89e545d3 use the new crypto/tls QUIC Transport (#3860) 2023-07-01 11:15:00 -07:00
Benedikt Spies
f57f876446 respect minimum idle timeout of 3 PTOs (#3909) 2023-06-20 01:47:29 -07:00
Marten Seemann
da55dfaabd ackhandler: unexport Packet 2023-06-05 21:06:58 +03:00
Marten Seemann
b27d114f07 pass the current timestamp to the pacer instead of calling time.Now() (#3824) 2023-06-03 00:26:30 -07:00
Marten Seemann
072a602cc1 pass around receivedPacket as struct instead of as pointer (#3823) 2023-06-03 00:08:58 -07:00
Marten Seemann
591ab1ab5e packer: reduce number of calls to time.Now() when packing packets (#3815) 2023-06-02 23:58:41 -07:00
Marten Seemann
5b5ffa942b pack packets into large buffers when GSO is available 2023-06-03 09:21:55 +03:00
Marten Seemann
628ba87727 append to a given buffer when packing a packet 2023-06-03 09:21:54 +03:00
Marten Seemann
b0524c1241 split code paths for packing normal and ACK-only packets 2023-06-02 18:35:02 +03:00