Commit Graph

6391 Commits

Author SHA1 Message Date
Marten Seemann
9010cfd2bb remove unused unknownPacketHandler interface (#4093) 2023-09-17 05:20:13 -07:00
Marten Seemann
22fb59ee6f create FUNDING.yml 2023-09-17 05:18:43 -07:00
Marten Seemann
55eebd49ff return the cancellation cause for cancelled dials (#4078) 2023-09-16 05:37:58 -07:00
Marten Seemann
1affe38703 move MaxTokenAge configuration option to the Transport (#4084) 2023-09-16 05:10:20 -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
d8cc4cb3ef http3: introduce an HTTP/3 error type (#4039)
* http3: introduce an HTTP/3 error type

* http3: use a pointer receiver for the Error
2023-09-16 04:57:50 -07:00
Marten Seemann
ab1c1be9a9 basic ClusterFuzzLite integration (#4034) 2023-09-15 09:57:13 -07:00
Marten Seemann
22eac50276 ci: combine the go generate workflow with the linting workflow (#4053)
* ci: combine the go generate workflow with the linting workflow

* reorder
2023-09-15 09:56:20 -07:00
Marten Seemann
5b25d8b5be ci: fail if any Go files contain an ignore directive (#4055) 2023-09-15 18:35:53 +07:00
Marten Seemann
c1ce4a8e92 http09: increase the startup timeout in tests (#4071) 2023-09-15 18:35:09 +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
Benedikt Spies
37a3c417a7 expose GSO usage through ConnectionState (#4083) 2023-09-13 23:55:49 -07:00
Marten Seemann
7599f81faf ci: clean up Codecov ignore list (#4081) 2023-09-12 04:37:12 -07:00
Marten Seemann
d52e9f35bc ackhandler: detect ECN mangling (#4080)
* ackhandler: detect ECN mangling

Mangling means that a path is re-marking all ECN-marked packets as CE.

* ackhandler: only detect ECN mangling once all testing packets were sent
2023-09-11 23:18:33 -07:00
Marten Seemann
2a8dc12a53 remove duplicate mocks for the Tracer and the ConnectionTracer (#4076)
They were introduced to avoid an import loop in the tests in the logging
package, but the same can be achieved by having a dedicated package for
the tests (logging_test).
2023-09-11 23:12:13 -07:00
Ameagari
d1f6ea997c save the RTT in non-0-RTT session tickets (#4042)
* also send session ticket when 0-RTT is disabled for go1.21

* allow session ticket without transport parameters

* do not include transport parameters for non-0RTT session ticket

* remove the test assertion because it is not supported for go1.20

* Update internal/handshake/session_ticket.go

Co-authored-by: Marten Seemann <martenseemann@gmail.com>

* add a 0-RTT argument to unmarshaling session tickets

* bump sessionTicketRevision to 4

* check if non-0-RTT session ticket has expected length

* change parameter order

* add test checks

---------

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
2023-09-11 08:05:31 -07:00
Marten Seemann
1f25153884 Merge pull request #4059 from quic-go/ecn
add ECN support
2023-09-11 22:04:31 +07:00
Marten Seemann
d6ac6300a4 feed ECN feedback into the congestion controller 2023-09-11 21:17:31 +07:00
Marten Seemann
797e275293 congestion: rename OnPacketLost to OnCongestionEvent 2023-09-11 21:14:53 +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
f9cfa248da implement ECN path validation logic, send ECN-marked 1-RTT packets 2023-09-11 21:14:52 +07:00
Marten Seemann
ffe6546833 add tracing and qlogging of state transitions for ECN validation 2023-09-11 20:31:50 +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
8df7624c07 add a QUIC_GO_DISABLE_ECN env to disable ECN support 2023-09-11 20:31:50 +07:00
Marten Seemann
b73a4de7ea only add an ECN control message if ECN is supported 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
f919473598 add support for writing the ECN control message (Linux, macOS) 2023-09-11 20:31:49 +07:00
Marten Seemann
a7f807856c randomize the serialization order of control frames (#4069)
* randomize the serialization order of control frames

* add comment for packetPacker.appendPacketPayload
2023-09-10 21:49:29 -07:00
Marten Seemann
abfe1ef548 remove Config.MaxRetryTokenAge, set it to the handshake timeout (#4064)
There is no good reason to manually set the validity period for Retry
tokens. Retry tokens are only valid on a single connection during the
handshake, so it makes sense to limit their validity to the configured
handshake timeout.
2023-09-10 13:53:12 +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
dc0369cad4 remove TLS post-handshake message reassembly logic (#4073)
Go 1.21.1 was released, which fixed the bug that made this workaround
necessary.
2023-09-06 21:27:03 -07:00
Marten Seemann
6cac231f6a update qtls-go1-20 to v0.3.4 (#4068) 2023-09-06 09:02:33 -07:00
Marten Seemann
591d864e5e ci: update GitHub checkout and setup-go actions to v4 (#4067) 2023-09-05 03:47:05 -07:00
Marten Seemann
96b1943cf5 ackhandler: rename variables to follow RFC 9002 terminology (#4062) 2023-09-03 21:45:41 -07:00
Ameagari
6cde43785f integration tests: fix connection timeout in 0-RTT test (#4060) 2023-09-01 19:40:35 -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
d7334c16e7 move the DisableVersionNegotiationPackets flag to the Transport (#4047)
* move the DisableVersionNegotiationPackets flag to the Transport

* add an integration test for DisableVersionNegotiationPackets
2023-08-30 23:33:40 -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
8963306987 ci: fix syntax error in integration test workflow (#4048) 2023-08-26 18:23:26 +07:00
Marten Seemann
e058f56643 ci: fix integration test running with and without GSO (#4043) 2023-08-24 18:23:44 -07:00
Marten Seemann
d22854641a remove the port from the hostname used for tls.Config.ServerName (#4046) v0.38.1 2023-08-24 17:53:02 -07:00
Marten Seemann
f633dca488 update qtls to v0.3.3 (#4044) 2023-08-22 20:36:33 -07:00
Jean-Francois Giorgi
8d91ad9fcd move QUIC_GO_DISABLE_GSO check out of init (#4041)
* move QUIC_GO_DISABLE_GSO test out of init().

* Update sys_conn_helper_linux.go

---------

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
2023-08-22 20:12:08 -07:00
WeidiDeng
824fd8a2f2 http3: automatically add content-length for small responses (#3989)
* response writer: add content-length automatically when response is small enough and doesn't call Flush

* fix comment

* add integration test

* Update http3/response_writer.go

* Update integrationtests/self/http_test.go

---------

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
v0.38.0
2023-08-20 20:31:22 -07: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
f689a5d023 ci: build interop Docker image for pushes to master, and for releases (#4035)
* ci: build interop Docker image for pushes to master, and tag releases

* use self-hosted runner to build Docker image

* Apply suggestions from code review

Co-authored-by: Piotr Galar <piotr.galar@gmail.com>

* Update .github/workflows/build-interop-docker.yml

Co-authored-by: Piotr Galar <piotr.galar@gmail.com>

* build the correct commit

* Update .github/workflows/build-interop-docker.yml

---------

Co-authored-by: Piotr Galar <piotr.galar@gmail.com>
2023-08-20 19:48:03 -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