Commit Graph

6423 Commits

Author SHA1 Message Date
Marten Seemann
427f53328b fix flaky server test (#4167) 2023-11-14 02:00:42 -08:00
Anders Pitman
740119b144 README: fix typo (#4166) 2023-11-14 01:09:47 -08:00
Marten Seemann
9414ea4910 ackhandler: immediately acknowledge ECN-CE marked packets (#4147)
* ackhandler: immediately acknowledge ECN-CE marked packets

* shorter debug statements
2023-11-03 08:28:16 -07:00
Marten Seemann
d4ab27de1f don't set the TLS version in the transport (#4135)
This is already done in the crypto setup.
2023-10-31 22:27:13 -07:00
Marten Seemann
f23da7da47 congestion: don't use floating point math when calculating pacing times (#4148) 2023-10-31 02:21:42 -07:00
Marten Seemann
a3603549ee document what happens to established connections on Listener.Close (#4138) v0.40.0 2023-10-27 23:40:50 -07:00
Marten Seemann
6eb0caca1a fix race condition in multiplex integration test (#4136) 2023-10-27 22:08:49 -07:00
Marten Seemann
5311f8178c README: link to webtransport-go repo (#4117) 2023-10-27 02:21:26 -07:00
Marten Seemann
dda63b90eb don't close established connections on Listener.Close, when using a Transport (#4072)
* don't close established connections on Listener.Close

* only close once
2023-10-26 23:10:13 -07:00
Marten Seemann
ef800d6f71 handshake: set MinVersion on the Config returned by GetConfigForClient (#4134) 2023-10-26 22:35:07 -07:00
Marten Seemann
d309060cde handshake: clone the tls.Config returned by GetConfigForClient (#4133)
We modify this tls.Config, so we should clone it first. Otherwise, this could
cause conflicts with how the application is using that config.
2023-10-26 22:22:20 -07:00
Marten Seemann
e2622bfad8 reject ClientHellos that offer TLS versions older than 1.3 (for Go 1.20) (#4130) 2023-10-25 09:49:53 -07:00
Marten Seemann
746290b78a never allow 0-RTT when using Dial, even if the session ticket allows it (#4125)
When resuming a TLS session using Dial (and not DialEarly), 0-RTT should
be disabled at the TLS layer, even if the session ticket allows for
0-RTT resumption.

This bug is not critical, since Dial doesn't return an EarlyConnection,
so the client wouldn't be able to actually send 0-RTT data in practice.
2023-10-25 08:20:23 -07:00
Marten Seemann
1bcec70978 ci: run linter on all supported Go versions (#4126) 2023-10-24 22:03:41 -07:00
Marten Seemann
30f9c0139f use typed atomics in integration tests (#4120)
* use typed atomic in integration tests

* use an atomic.Bool in hotswap test
2023-10-24 21:46:29 -07:00
Marten Seemann
6239effc7a fix IPv4 ECN control message length on Linux (#4127) 2023-10-24 21:18:43 -07:00
Marten Seemann
1c631cf9cb rename Connection.{Send,Receive}Message to {Send,Receive}Datagram (#4116)
This is more consistent with both the RFC and the rest of the API. For
example, the option in the Config is already name EnableDatagrams, and
the property in the ConnectionState is named SupportsDatagrams.
2023-10-24 21:18:09 -07:00
Marten Seemann
7884f87f82 ci: use bash on all platforms (#4122) 2023-10-22 23:36:45 -07:00
Marten Seemann
4c357c8f76 ci: create separate artifact archives per workflow run (#4121) 2023-10-22 22:53:10 -07:00
Marten Seemann
5314d90b9f fix logging of connection IDs in tracer test (#4118) 2023-10-22 22:46:27 -07:00
Glonee
36f7fe7d07 http3: discard body from responses to HEAD requests (#4115)
* http3: HEAD method should not have a body

* add tests

* Update http3/server.go

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

* ruduce the size of responseWriter

---------

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
2023-10-22 19:31:24 -07: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
b344940f06 catch EPERM sendmsg errors for the very first packet on Linux (#4111) 2023-10-17 01:23:33 -07:00
Marten Seemann
262cf0a592 fix IPv4 ECN control message length on FreeBSD (#4110) 2023-10-16 22:50:40 -07:00
Marten Seemann
f49944b737 README: add qlog to list of supported RFCs, add an example (#4102) 2023-10-13 00:05:47 -07:00
Marten Seemann
49e588a6a9 don't spawn a new Go routine to send a Retry packet (#4092) 2023-09-25 04:21:51 -07:00
Marten Seemann
ae2ef95fa3 don't spawn a new Go routine to send a CONNECTION_REFUSED packet (#4091) 2023-09-25 09:31:27 +00:00
Marten Seemann
348042ee4c simplify sending of INVALID_TOKEN errors (#4090) 2023-09-25 02:14:07 -07:00
Marten Seemann
9a397abc17 update gomock to v0.3.0 (#4087) v0.39.0 2023-09-24 04:38:28 -07:00
Toby
4bdff39ff0 README: add Hysteria (#4085)
* chore: add my project

* fix order
2023-09-24 04:01:03 -07:00
Marten Seemann
4a046185b7 ackhandler: fix ECN mangling detection when packets are lost (#4089)
Some of the 10 testing packets are might be lost, while others might be
CE-marked. We need to detect mangling if all testing packets are either
lost are CE-marked.
2023-09-17 22:08:33 -07:00
Marten Seemann
c12f425803 ackhandler: don't fail ECN validation if less than 10 testing packets are lost (#4088)
* ackhandler: don't fail ECN validation less than 10 testing packets lost

* ackhandler: simplify checks for mangling and loss of all testing packets
2023-09-17 23:00:05 +04:00
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