]> git.feebdaed.xyz Git - 0xmirror/quic-go.git/log
0xmirror/quic-go.git
5 weeks agohttp3: limit size of decompressed headers (#5452)
Marten Seemann [Fri, 21 Nov 2025 10:10:59 +0000 (18:10 +0800)]
http3: limit size of decompressed headers (#5452)

5 weeks agoqlogwriter: use synctest to make tests deterministic (#5454)
Marten Seemann [Fri, 21 Nov 2025 10:04:37 +0000 (18:04 +0800)]
qlogwriter: use synctest to make tests deterministic (#5454)

5 weeks agoREADME: add nodepass to list of projects (#5448)
๐˜๐จ๐ฌ๐ž๐›๐ฒ๐ญ๐ž [Thu, 20 Nov 2025 15:05:17 +0000 (23:05 +0800)]
README: add nodepass to list of projects (#5448)

* README: add nodepass to list of projects

* README: reorder nodepass in list of projects

5 weeks agodonโ€™t arm connection timer for connection ID retirement (#5449)
Marten Seemann [Thu, 20 Nov 2025 14:24:37 +0000 (22:24 +0800)]
donโ€™t arm connection timer for connection ID retirement (#5449)

It should be sufficient to retire connection IDs the next time the run
loops wakes up anyway, e.g. when a packet is received, or when a new
packet is sent.

5 weeks agoackhandler: donโ€™t generate an immediate ACK for the first packet (#5447)
Marten Seemann [Thu, 20 Nov 2025 14:05:05 +0000 (22:05 +0800)]
ackhandler: donโ€™t generate an immediate ACK for the first packet (#5447)

Instead apply the regular RFC 9000 logic and send an acknowledgment
after receiving two ack-eliciting packets.

5 weeks agoadd documentation for Conn.NextConnection (#5442)
Marten Seemann [Thu, 20 Nov 2025 03:02:20 +0000 (11:02 +0800)]
add documentation for Conn.NextConnection (#5442)

5 weeks agohttp3: use QPACK_DECOMPRESSION_FAILED for QPACK errors (#5439)
Marten Seemann [Thu, 20 Nov 2025 01:27:18 +0000 (09:27 +0800)]
http3: use QPACK_DECOMPRESSION_FAILED for QPACK errors (#5439)

* update testify to v1.11.1

* http3: use QPACK_DECOMPRESSION_FAILED for QPACK errors

5 weeks agoupdate qpack to v0.6.0 (#5434)
Marten Seemann [Wed, 19 Nov 2025 08:02:37 +0000 (16:02 +0800)]
update qpack to v0.6.0 (#5434)

* update qpack to v0.6.0

* qlog invalid trailers

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
5 weeks agohttp3: add a benchmark for header parsing (#5435)
Marten Seemann [Wed, 19 Nov 2025 03:28:29 +0000 (11:28 +0800)]
http3: add a benchmark for header parsing (#5435)

5 weeks agohttp3: make Transport.MaxResponseBytes an int (#5433)
Marten Seemann [Wed, 19 Nov 2025 01:11:39 +0000 (09:11 +0800)]
http3: make Transport.MaxResponseBytes an int (#5433)

Both http.Server.MaxHeaderBytes and http3.Server.MaxHeaderBytes are ints
as well, so this is more consistent.

5 weeks agohttp3: read response after encountering error sending the request (#5432)
Marten Seemann [Tue, 18 Nov 2025 03:55:33 +0000 (11:55 +0800)]
http3: read response after encountering error sending the request (#5432)

If the error is a connection-wide error, or if the receive side of the
stream was reset, reading the response will fail immediately. However,
if only the send side was reset, this enables the client to read the
serverโ€™s response (e.g. a HTTP status code).

5 weeks agohttp3: send SETTINGS_MAX_FIELD_SECTION_SIZE in the SETTINGS frame (#5431)
Marten Seemann [Sun, 16 Nov 2025 13:45:27 +0000 (21:45 +0800)]
http3: send SETTINGS_MAX_FIELD_SECTION_SIZE in the SETTINGS frame (#5431)

* http3/qlog: implement qlogging of SETTINGS_MAX_FIELD_SECTION_SIZE

* http3: send SETTINGS_MAX_FIELD_SECTION_SIZE in the SETTINGS frame

6 weeks agoqlogwriter: fix storing of event schemas (#5430)
Marten Seemann [Fri, 14 Nov 2025 08:44:33 +0000 (16:44 +0800)]
qlogwriter: fix storing of event schemas (#5430)

HTTP/3 qlogging (and qlogging for any other application protocol) only
works if the event schemas are stored.

6 weeks agoci: bump golangci/golangci-lint-action from 8 to 9 (#5426)
dependabot[bot] [Mon, 10 Nov 2025 07:25:27 +0000 (08:25 +0100)]
ci: bump golangci/golangci-lint-action from 8 to 9 (#5426)

Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 8 to 9.
- [Release notes](https://github.com/golangci/golangci-lint-action/releases)
- [Commits](https://github.com/golangci/golangci-lint-action/compare/v8...v9)

---
updated-dependencies:
- dependency-name: golangci/golangci-lint-action
  dependency-version: '9'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
7 weeks agoqlog: split the PTO count updates ouf of the MetricsUpdated event (#5421)
Marten Seemann [Tue, 4 Nov 2025 17:13:06 +0000 (12:13 -0500)]
qlog: split the PTO count updates ouf of the MetricsUpdated event (#5421)

* qlog: split the PTO count updates ouf of the MetricsUpdated event

This allows us to not use pointers for all member variables of both
events.

* ackhandler: avoid spurious call to GetCongestionWindow

7 weeks agoqlog: rework the ConnectionClosed event (#5417)
Marten Seemann [Mon, 3 Nov 2025 15:12:13 +0000 (10:12 -0500)]
qlog: rework the ConnectionClosed event (#5417)

7 weeks agoackhandler: fix qlogging of RTT values (#5418)
Marten Seemann [Sun, 2 Nov 2025 17:53:30 +0000 (12:53 -0500)]
ackhandler: fix qlogging of RTT values (#5418)

8 weeks agouse synctest for the stateless reset tests (#5415)
Marten Seemann [Sat, 1 Nov 2025 16:58:37 +0000 (17:58 +0100)]
use synctest for the stateless reset tests (#5415)

8 weeks agoqlog: rename owner to initiator (#5416)
Marten Seemann [Sat, 1 Nov 2025 16:30:18 +0000 (17:30 +0100)]
qlog: rename owner to initiator (#5416)

Owner was renamed to Initiator in draft-ietf-qlog-quic-events-11.

8 weeks agouse synctest in handshake RTT tests (#5414)
Marten Seemann [Sat, 1 Nov 2025 15:19:03 +0000 (16:19 +0100)]
use synctest in handshake RTT tests (#5414)

8 weeks agoci: update golangci-lint to v2.6.0 (#5412)
Marten Seemann [Thu, 30 Oct 2025 21:18:03 +0000 (22:18 +0100)]
ci: update golangci-lint to v2.6.0 (#5412)

* ci: update golangci-lint to v2.6.0

* supress synctest linter warning

8 weeks agoci: bump actions/upload-artifact from 4 to 5 (#5411)
dependabot[bot] [Thu, 30 Oct 2025 15:26:47 +0000 (16:26 +0100)]
ci: bump actions/upload-artifact from 4 to 5 (#5411)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
8 weeks agoquicvarint: improve panic message for numbers larger 2^62 (#5410)
Marten Seemann [Thu, 30 Oct 2025 14:24:10 +0000 (15:24 +0100)]
quicvarint: improve panic message for numbers larger 2^62 (#5410)

2 months agoci: use gcassert to check that quicvarint.Len is inlined (#5409)
Marten Seemann [Fri, 24 Oct 2025 20:03:00 +0000 (22:03 +0200)]
ci: use gcassert to check that quicvarint.Len is inlined (#5409)

2 months agofix flaky TestServerTransportClose (#5407)
Copilot [Fri, 24 Oct 2025 16:24:01 +0000 (18:24 +0200)]
fix flaky TestServerTransportClose (#5407)

* Initial plan

* Fix TestServerTransportClose race condition by accepting conn1 before dialing conn2

Co-authored-by: marten-seemann <1478487+marten-seemann@users.noreply.github.com>
---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: marten-seemann <1478487+marten-seemann@users.noreply.github.com>
2 months agofix flaky TestConnectionUnpackFailureDropped (#5382)
Copilot [Fri, 24 Oct 2025 15:47:19 +0000 (17:47 +0200)]
fix flaky TestConnectionUnpackFailureDropped (#5382)

* Initial plan

* Fix flaky TestConnectionUnpackFailureDropped by adding synctest.Wait

Co-authored-by: marten-seemann <1478487+marten-seemann@users.noreply.github.com>
* formatting

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: marten-seemann <1478487+marten-seemann@users.noreply.github.com>
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
2 months agouse synctest for the timeout tests (#5403)
Marten Seemann [Fri, 24 Oct 2025 10:51:09 +0000 (12:51 +0200)]
use synctest for the timeout tests (#5403)

2 months agouse synctest for the datagram test (#5398)
Marten Seemann [Thu, 23 Oct 2025 17:32:01 +0000 (19:32 +0200)]
use synctest for the datagram test (#5398)

2 months agouse synctest for the handshake drop test (#5397)
Marten Seemann [Thu, 23 Oct 2025 14:56:35 +0000 (16:56 +0200)]
use synctest for the handshake drop test (#5397)

This test used to take 15-30s locally, and even more on CI. It now runs in less than 1ms.

2 months agouse synctest for the packet drop test (#5393)
Marten Seemann [Tue, 21 Oct 2025 14:28:11 +0000 (16:28 +0200)]
use synctest for the packet drop test (#5393)

2 months agouse simnet in CONNECTION_CLOSE retransmission test (#5395)
Marten Seemann [Mon, 20 Oct 2025 06:44:09 +0000 (14:44 +0800)]
use simnet in CONNECTION_CLOSE retransmission test (#5395)

* use simnet in CONNECTION_CLOSE retransmission test

* fix race

2 months agouse synctest for transport tests (#5391)
Marten Seemann [Sun, 19 Oct 2025 07:51:01 +0000 (15:51 +0800)]
use synctest for transport tests (#5391)

* use synctest for transport tests

* disable TestTransportReplaceWithClosed on Go 1.24

2 months agoadd simnet package to simulate a net.PacketConn in memory (#5385)
Marten Seemann [Sat, 18 Oct 2025 07:19:46 +0000 (15:19 +0800)]
add simnet package to simulate a net.PacketConn in memory (#5385)

* Implement simnet

* simnet: remove separate license

* simnet: remove go.mod, use standard require package

* simnet: add README

* simnet: use synctest wrapper in tests

* simnet: minor code cleanup

* simnet: expose Packet.Data

* simnet: explose Simnet.Router

* simnet: remove SimpleFirewallRouter

* simnet: remove stray fmt.Println in tests

* fix deadline check for write deadlines

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* simnet: fix SetReadDeadline logic

---------

Co-authored-by: Marco Munizaga <git@marcopolo.io>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2 months agocongestion: avoid overflows when calculating pacer budget (#5390)
Marten Seemann [Fri, 17 Oct 2025 05:30:07 +0000 (13:30 +0800)]
congestion: avoid overflows when calculating pacer budget (#5390)

* congestion: prevent uint64 overflow in pacer

This should never happen for bandwidths even remotely possible in
real-world scenarios, but itโ€™s better to be safe.

* congestion: add a benchmark test for the pacer

* add a comment

2 months agouse default RTT (100ms) for 0-RTT if no prior estimate (#5388)
Marten Seemann [Thu, 16 Oct 2025 07:32:46 +0000 (15:32 +0800)]
use default RTT (100ms) for 0-RTT if no prior estimate (#5388)

* utils: initialize the {Smoothed, Latest, Min}RTT to 100ms

* utils: use time.Duration.Nanoseconds instead of uint64

No functional change expected.

* congestion: better check to avoid division by zero

2 months agohttp3: add the qlog event schema to trace header (#5383)
Marten Seemann [Wed, 15 Oct 2025 04:02:05 +0000 (12:02 +0800)]
http3: add the qlog event schema to trace header (#5383)

2 months agohttp3: qlog reserved, unsupported and unknown frames (#5381)
Marten Seemann [Sun, 12 Oct 2025 12:11:54 +0000 (20:11 +0800)]
http3: qlog reserved, unsupported and unknown frames (#5381)

2 months agohttp3: qlog the frame length and payload length of parsed frames (#5380)
Marten Seemann [Sun, 12 Oct 2025 08:58:32 +0000 (16:58 +0800)]
http3: qlog the frame length and payload length of parsed frames (#5380)

2 months agohttp3: qlog sent and received SETTINGS frames (#5379)
Marten Seemann [Sun, 12 Oct 2025 05:16:37 +0000 (13:16 +0800)]
http3: qlog sent and received SETTINGS frames (#5379)

* http3: implement qlog serialization for SETTINGS frames

* http3: qlog sent and received SETTINGS frames

2 months agohttp3: move qlogging of frames into the frame parser (#5378)
Marten Seemann [Sun, 12 Oct 2025 04:40:24 +0000 (12:40 +0800)]
http3: move qlogging of frames into the frame parser (#5378)

2 months agohttp3: qlog sent and received DATAGRAMs (#5375)
Marten Seemann [Sat, 11 Oct 2025 12:14:06 +0000 (20:14 +0800)]
http3: qlog sent and received DATAGRAMs (#5375)

2 months agohttp3: qlog sent and received GOAWAY frames (#5376)
Marten Seemann [Sat, 11 Oct 2025 11:20:01 +0000 (19:20 +0800)]
http3: qlog sent and received GOAWAY frames (#5376)

2 months agoREADME: update OSS-Fuzz link (#5377)
FS [Sat, 11 Oct 2025 09:38:25 +0000 (11:38 +0200)]
README: update OSS-Fuzz link (#5377)

oss-fuzz issues has been migrated to issues.oss-fuzz.com and the project field is not searcheable.

2 months agohttp3: add basic client-side qlog support (#5374)
Marten Seemann [Sat, 11 Oct 2025 08:13:49 +0000 (16:13 +0800)]
http3: add basic client-side qlog support (#5374)

2 months agohttp3: fix qlog encoding of frame_parsed and frame_created events (#5372)
Marten Seemann [Sat, 11 Oct 2025 07:48:05 +0000 (15:48 +0800)]
http3: fix qlog encoding of frame_parsed and frame_created events (#5372)

2 months agoqlog: use PathEndpointInfo in connection_started (#5368)
Marten Seemann [Sat, 11 Oct 2025 05:55:38 +0000 (13:55 +0800)]
qlog: use PathEndpointInfo in connection_started (#5368)

* qlog: use PathEndpointInfo in connection_started

* correctly deal with dual-stack addresses

2 months agojsontext: add support for encoding null (#5371)
Marten Seemann [Sat, 11 Oct 2025 05:08:06 +0000 (13:08 +0800)]
jsontext: add support for encoding null (#5371)

2 months agohttp3: add basic server-side qlog support (#5367)
Marten Seemann [Fri, 10 Oct 2025 10:35:58 +0000 (18:35 +0800)]
http3: add basic server-side qlog support (#5367)

* add Conn.QlogTrace

* http3: add basic qlog support on the server side

2 months agoci: include OS and Go version in Codecov test report upload (#5370)
Marten Seemann [Fri, 10 Oct 2025 07:45:25 +0000 (15:45 +0800)]
ci: include OS and Go version in Codecov test report upload (#5370)

2 months agofix qlogging of the short header payload length (#5365)
Marten Seemann [Thu, 9 Oct 2025 12:17:55 +0000 (20:17 +0800)]
fix qlogging of the short header payload length (#5365)

2 months agoqlog: privatize Encode methods of non-Event structs (#5364)
Marten Seemann [Thu, 9 Oct 2025 12:12:19 +0000 (20:12 +0800)]
qlog: privatize Encode methods of non-Event structs (#5364)

2 months agoackhandler: fix qlogging of alarm timer expiration time (#5363)
Marten Seemann [Thu, 9 Oct 2025 08:21:06 +0000 (16:21 +0800)]
ackhandler: fix qlogging of alarm timer expiration time (#5363)

2 months agoqlogwriter: pass the event time to Event.Encode (#5362)
Marten Seemann [Thu, 9 Oct 2025 05:57:14 +0000 (13:57 +0800)]
qlogwriter: pass the event time to Event.Encode (#5362)

This is needed for events such as recovery:loss_timer_updated, which
contain the timer expiration timestamp encoded as a difference from the
event time.

2 months agoqlogwriter: add support for event_schemas in the trace header (#5361)
Marten Seemann [Thu, 9 Oct 2025 04:07:23 +0000 (12:07 +0800)]
qlogwriter: add support for event_schemas in the trace header (#5361)

2 months agoqlogwriter: implement the draft-12 trace header (#5360)
Marten Seemann [Wed, 8 Oct 2025 14:21:35 +0000 (22:21 +0800)]
qlogwriter: implement the draft-12 trace header (#5360)

2 months agoqlog: split serializiation and event definitions, remove logging abstraction (#5356)
Marten Seemann [Wed, 8 Oct 2025 03:53:02 +0000 (11:53 +0800)]
qlog: split serializiation and event definitions, remove logging abstraction (#5356)

* qlog: implement a Trace and a Writer struct

* qlog: rename Trace to FileSeq

* split qlog trace writer and QUIC qlog events into separate packages

* use the new qlog.Recorder instead of the logging.ConnectionTracer

2 months agouse synctest in more connection tests (#5357)
Marten Seemann [Mon, 6 Oct 2025 12:49:04 +0000 (20:49 +0800)]
use synctest in more connection tests (#5357)

No functional change expected.

2 months agoci: remove 386 (32 bit x86) (#5352)
Marco Munizaga [Mon, 6 Oct 2025 05:23:09 +0000 (22:23 -0700)]
ci: remove 386 (32 bit x86) (#5352)

The last 386 cpu was from 20 years ago (Pentium 4)

2 months agoqlog: implement a minimal jsontext-like JSON encoder (#5353)
Marten Seemann [Mon, 6 Oct 2025 04:48:40 +0000 (12:48 +0800)]
qlog: implement a minimal jsontext-like JSON encoder (#5353)

* qlog: use fork of encoding/json/jsontext instead of unmaintained gojay

* implement a minimal jsontext-compatible encoder

* qlogtext: improve fuzz test

* qlog: simplify JSON encoding error handling

* qlog: make use of jsontext.Bool

2 months agoackhandler: track lost packets and detect spurious losses (#5355)
Marten Seemann [Fri, 3 Oct 2025 07:59:50 +0000 (15:59 +0800)]
ackhandler: track lost packets and detect spurious losses (#5355)

* ackhandler: implement a lost packet tracker

* logging: add ConnectionTracer.DetectedSpuriousLoss event

* ackhandler: detect spurious losses

* qlog: add support for logging spurious packet loss

* ackhandler: delete lost packets after detecting spurios loss

* guard against slice index underflow

2 months agofix missing tracing of restored transport parameters (#5349)
Marten Seemann [Fri, 3 Oct 2025 06:53:20 +0000 (14:53 +0800)]
fix missing tracing of restored transport parameters (#5349)

2 months agoprotocol: optimize ConnectionID.String (#5351)
Marten Seemann [Fri, 3 Oct 2025 06:27:39 +0000 (14:27 +0800)]
protocol: optimize ConnectionID.String (#5351)

This function is used by qlog, so it should be fast.

2 months agodrop initial keys when the handshake is confirmed (#5354)
Marten Seemann [Fri, 3 Oct 2025 05:25:05 +0000 (13:25 +0800)]
drop initial keys when the handshake is confirmed (#5354)

3 months agouse synctest to make the connection tests fully deterministic (#5317)
Marten Seemann [Wed, 24 Sep 2025 10:54:22 +0000 (18:54 +0800)]
use synctest to make the connection tests fully deterministic (#5317)

3 months agoimprove connection timer logic (#5339)
Marten Seemann [Wed, 24 Sep 2025 08:43:01 +0000 (16:43 +0800)]
improve connection timer logic (#5339)

* simplify timer resets

As of Go 1.23, timer resets work as expected, and thereโ€™s no need to
read a (potentially) stale value from the timer channel.

* don't save the last time

* track if blocked

* remove unblock after sendingScheduled

* fix unblock logic when sending

* don't use fallthrough

* track the blocking mode

* remove stale comment

3 months agoadd a benchmark test for data transfers (#5335)
Marten Seemann [Sat, 20 Sep 2025 10:23:50 +0000 (18:23 +0800)]
add a benchmark test for data transfers (#5335)

3 months agoimplement a memory-optimized time.Time replacement (#5334)
Marten Seemann [Sun, 14 Sep 2025 06:12:10 +0000 (14:12 +0800)]
implement a memory-optimized time.Time replacement (#5334)

* implement a memory-optimized time.Time replacement

* monotime: properly handle systems with bad timer resolution (Windows)

* monotime: simplify Since

3 months agoackhandler: add a benchmark for sending and acknowledging packets (#5333)
Marten Seemann [Sun, 14 Sep 2025 05:00:13 +0000 (13:00 +0800)]
ackhandler: add a benchmark for sending and acknowledging packets (#5333)

* ackhandler: add a benchmark for sending and acknowledging packets

* report allocs, improve benchmark names

3 months agoreturn stream frames to pool on stream cancellations (#5327)
Marcin Rataj [Tue, 9 Sep 2025 11:15:45 +0000 (13:15 +0200)]
return stream frames to pool on stream cancellations (#5327)

* fix: return stream frames to pool on error paths

fixes potential memory leak where StreamFrames were not returned to
sync.Pool in error/cancellation paths.

root cause: frames are llocated via GetStreamFrame() but never returned
via PutBack() when streams enter terminal states without going through
normal OnAcked() cleanup.

fixed paths:
- CancelWrite(): return frames when reliableOffset == 0
- handleStopSendingFrame(): return frames on STOP_SENDING
- closeForShutdown(): return frames on connection shutdown
- OnLost(): return frame when stream reset with no data sent

* fix: clear slice before nil assignment, remove excessive tests

- add clear() call to properly release GC references per https://github.com/quic-go/quic-go/pull/5327#discussion_r2328451862
- remove excessive pool return tests per https://github.com/quic-go/quic-go/pull/5327#discussion_r2328453227

3 months agoci: bump actions/setup-go from 5 to 6 (#5330)
dependabot[bot] [Mon, 8 Sep 2025 04:52:38 +0000 (06:52 +0200)]
ci: bump actions/setup-go from 5 to 6 (#5330)

Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5 to 6.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3 months agohttp3: don't allow usage of closed Transport (#5324)
Glonee [Sun, 7 Sep 2025 10:52:25 +0000 (18:52 +0800)]
http3: don't allow usage of closed Transport (#5324)

* do not allow use a closed transport

* update tests

* add test

* Update http3/transport.go

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

* update test

---------

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
3 months agoqlog: merge event category and name (#5329)
Marten Seemann [Sun, 7 Sep 2025 09:40:45 +0000 (17:40 +0800)]
qlog: merge event category and name (#5329)

This follows a (not so recent) change to the qlog specification.

3 months agoqlog: add a benchmark for the ConnectionTracer (#5328)
Marten Seemann [Sun, 7 Sep 2025 09:16:26 +0000 (17:16 +0800)]
qlog: add a benchmark for the ConnectionTracer (#5328)

This test aims to benchmark a somewhat realistic scenario of a QUIC
connection that sends packets and receives acknowledgments.

3 months agohttp3: fix race in concurrent Transport.RoundTrip calls (#5323)
Glonee [Sun, 7 Sep 2025 03:25:00 +0000 (11:25 +0800)]
http3: fix race in concurrent Transport.RoundTrip calls (#5323)

* http3: fix data race in Transport

* reset init Once

3 months agoackhandler: store the last four skipped packets (#5322)
Marten Seemann [Sat, 30 Aug 2025 06:05:59 +0000 (14:05 +0800)]
ackhandler: store the last four skipped packets (#5322)

This allows for more accurate packet number difference calculations,
which is especially important once we attempt to detect spurious loss
detection events.

3 months agoackhandler: account for skipped packets in packet threshold calculation (#5316)
Marten Seemann [Fri, 29 Aug 2025 03:39:41 +0000 (11:39 +0800)]
ackhandler: account for skipped packets in packet threshold calculation (#5316)

3 months agoackhandler: store skipped packet numbers separately (#5314)
Marten Seemann [Fri, 29 Aug 2025 03:09:46 +0000 (11:09 +0800)]
ackhandler: store skipped packet numbers separately (#5314)

3 months agoackhandler: avoid storing packet number in packet struct (#5312)
Marten Seemann [Fri, 29 Aug 2025 02:18:45 +0000 (10:18 +0800)]
ackhandler: avoid storing packet number in packet struct (#5312)

* ackhandler: optimize memory layout of packet struct

The packet number can be derived from the position that this packet is
stored at in the packets slice in the sent packet history. There is no
need to store the packet number, saving 8 bytes per packet.

* ackhandler: avoid copying the packet struct

3 months agoci: fix cache paths in cross compile workflow (#5318)
Marten Seemann [Fri, 29 Aug 2025 02:05:44 +0000 (10:05 +0800)]
ci: fix cache paths in cross compile workflow (#5318)

3 months agoci: improve cache key generation for the cross compilation job (#5315)
Marten Seemann [Thu, 28 Aug 2025 15:12:06 +0000 (23:12 +0800)]
ci: improve cache key generation for the cross compilation job (#5315)

3 months agoackhandler: immediately clear ackedPacket slice after processing ACK (#5313)
Marten Seemann [Thu, 28 Aug 2025 14:12:20 +0000 (22:12 +0800)]
ackhandler: immediately clear ackedPacket slice after processing ACK (#5313)

* ackhandler: immediately clear ackedPacket slice after processing ACK

* ackhandler: add defensive check for empty ackedPackets slice

3 months agoackhandler: use a typed mock for the ECNHandler (#5311)
Marten Seemann [Thu, 28 Aug 2025 11:39:42 +0000 (19:39 +0800)]
ackhandler: use a typed mock for the ECNHandler (#5311)

No functional change expected.

3 months agoackhandler: use an iterator to process received packet ranges (#5309)
Marten Seemann [Thu, 28 Aug 2025 08:32:26 +0000 (16:32 +0800)]
ackhandler: use an iterator to process received packet ranges (#5309)

* ackhandler: use an interator to track received packet ranges

* use slices.Collect

* naming convention

3 months agoackhandler: fix resetting of packet.isPathProbePacket (#5310)
Marten Seemann [Thu, 28 Aug 2025 08:18:49 +0000 (16:18 +0800)]
ackhandler: fix resetting of packet.isPathProbePacket (#5310)

4 months agoutils: use synctest to make the timer tests fully deterministic (#5306)
Marten Seemann [Mon, 25 Aug 2025 07:25:50 +0000 (15:25 +0800)]
utils: use synctest to make the timer tests fully deterministic (#5306)

* utils: use synctest to make the timer tests fully deterministic

* Go 1.24 workaround

4 months agouse synctest to make the datagram queue tests fully deterministic (#5305)
Marten Seemann [Mon, 25 Aug 2025 04:38:40 +0000 (12:38 +0800)]
use synctest to make the datagram queue tests fully deterministic (#5305)

4 months agouse synctest to make the outgoing path manager tests fully deterministic (#5304)
Marten Seemann [Sun, 24 Aug 2025 11:11:10 +0000 (19:11 +0800)]
use synctest to make the outgoing path manager tests fully deterministic (#5304)

4 months agoci: use go mod tidy -diff to check for tidied go.mod (#5303)
Marten Seemann [Sun, 24 Aug 2025 10:27:56 +0000 (18:27 +0800)]
ci: use go mod tidy -diff to check for tidied go.mod (#5303)

4 months agouse synctest to make the send stream tests fully deterministic (#5298)
Marten Seemann [Sun, 24 Aug 2025 05:09:16 +0000 (13:09 +0800)]
use synctest to make the send stream tests fully deterministic (#5298)

4 months agouse synctest to make the send queue tests fully deterministic (#5302)
Marten Seemann [Sun, 24 Aug 2025 04:58:41 +0000 (12:58 +0800)]
use synctest to make the send queue tests fully deterministic (#5302)

4 months agouse synctest.Wait in receive stream tests (#5299)
Marten Seemann [Sun, 24 Aug 2025 04:25:04 +0000 (12:25 +0800)]
use synctest.Wait in receive stream tests (#5299)

4 months agorestore previously deleted TestStreamsMapConcurrent test (#5301)
Marten Seemann [Sun, 24 Aug 2025 04:18:22 +0000 (12:18 +0800)]
restore previously deleted TestStreamsMapConcurrent test (#5301)

4 months agoci: fix cache save and restore logic for cross compile workflow (#5300)
Marten Seemann [Sun, 24 Aug 2025 03:48:49 +0000 (11:48 +0800)]
ci: fix cache save and restore logic for cross compile workflow (#5300)

lookup-only doesn't download the cache, even if it's there. This is not what we
intended: we still want to use the cache for PRs, we just want to upload a
new cache.

4 months agoci: cache the Go build cache for cross-compilation workflow (#5297)
Marten Seemann [Sat, 23 Aug 2025 16:27:48 +0000 (00:27 +0800)]
ci: cache the Go build cache for cross-compilation workflow (#5297)

* ci: cache the Go build cache for cross-compilation workflow

* only store cache when on master

* don't hash go.sum in

4 months agouse synctest to make streams map tests fully deterministic (#5296)
Marten Seemann [Sat, 23 Aug 2025 16:11:59 +0000 (00:11 +0800)]
use synctest to make streams map tests fully deterministic (#5296)

* use synctest to make streams map tests fully deterministic

* ignore synctest helper package for code coverage

4 months agouse synctest to make receive stream tests fully deterministc (#5291)
Marten Seemann [Wed, 20 Aug 2025 07:44:19 +0000 (15:44 +0800)]
use synctest to make receive stream tests fully deterministc (#5291)

4 months agoci: bump actions/checkout from 4 to 5 (#5293)
dependabot[bot] [Mon, 18 Aug 2025 02:53:15 +0000 (04:53 +0200)]
ci: bump actions/checkout from 4 to 5 (#5293)

Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
4 months agouse testing.B.Loop in all benchmark tests (#5285)
Marten Seemann [Sat, 16 Aug 2025 10:44:56 +0000 (12:44 +0200)]
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.

4 months agoreplace interface{} with any (#5290)
Marten Seemann [Sat, 16 Aug 2025 05:21:18 +0000 (07:21 +0200)]
replace interface{} with any (#5290)

No functional change expected.

4 months agoupdate to Go 1.25, drop Go 1.23, use go tool for gomock (#5283)
Marten Seemann [Sat, 16 Aug 2025 04:14:01 +0000 (06:14 +0200)]
update to Go 1.25, drop Go 1.23, use go tool for gomock (#5283)

* update to Go 1.25, drop support for Go 1.23

* ci: update golangci-lint to v2.4.0

* use new go tool command for gomock / mockgen

* also update Go version used for oss-fuzz