]> git.feebdaed.xyz Git - 0xmirror/quic-go.git/log
0xmirror/quic-go.git
29 hours agoci: use codecov-action instead of codecov/test-results-action (#5504) master
Copilot [Fri, 26 Dec 2025 13:12:06 +0000 (14:12 +0100)]
ci: use codecov-action instead of codecov/test-results-action (#5504)

* Initial plan

* Replace deprecated codecov/test-results-action with codecov-action@v5

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>
35 hours agosimplify ReceiveStream.Read implementation (#5500)
Marten Seemann [Fri, 26 Dec 2025 07:17:55 +0000 (15:17 +0800)]
simplify ReceiveStream.Read implementation (#5500)

* simplify check for stream cancellations

* only arm deadline timer if there’s no data to read

* remove redundant nil check

2 days agoexpose SetReliableBoundary method on the Stream (#5498)
Marten Seemann [Thu, 25 Dec 2025 01:32:54 +0000 (02:32 +0100)]
expose SetReliableBoundary method on the Stream (#5498)

This function was already exposed on the SendStream.

6 days agoremove deprecated ClientHelloInfo (#5497)
Marten Seemann [Sun, 21 Dec 2025 09:47:59 +0000 (10:47 +0100)]
remove deprecated ClientHelloInfo (#5497)

6 days agoackhandler: only generate RTT sample for the last ack-eliciting packet (#5493)
Marten Seemann [Sun, 21 Dec 2025 07:34:32 +0000 (08:34 +0100)]
ackhandler: only generate RTT sample for the last ack-eliciting packet (#5493)

This logic now works across packet number spaces. It avoids inflated RTT measurements when packets are buffered during the handshake.

6 days agoackhandler: record RTT measurements for non-ack-eliciting packets (#5494)
Marten Seemann [Sun, 21 Dec 2025 03:34:36 +0000 (04:34 +0100)]
ackhandler: record RTT measurements for non-ack-eliciting packets (#5494)

* ackhandler: also save non-ack-eliciting packets in the packet history

* ackhandler: also measure RTTs for non-ack-eliciting packets

7 days agoutils: make TestAddTimestamp work in all time zones (#5492)
Marten Seemann [Sat, 20 Dec 2025 05:27:44 +0000 (06:27 +0100)]
utils: make TestAddTimestamp work in all time zones (#5492)

7 days agoci: add Go 1.26rc1 to tested Go versions (#5486)
Marten Seemann [Sat, 20 Dec 2025 04:29:45 +0000 (05:29 +0100)]
ci: add Go 1.26rc1 to tested Go versions (#5486)

* ci: add Go 1.26rc1 to tested Go versions

* don't run golangci-lint on Go 1.26 yet

10 days agoupdate the logo (#5484)
Marten Seemann [Wed, 17 Dec 2025 05:19:25 +0000 (06:19 +0100)]
update the logo (#5484)

* update the logo

* add a license for the logo

* add a little bit of margin around the PNG logo

* use a more restrictive license

12 days agoci: bump actions/upload-artifact from 5 to 6 (#5483)
dependabot[bot] [Mon, 15 Dec 2025 03:14:52 +0000 (04:14 +0100)]
ci: bump actions/upload-artifact from 5 to 6 (#5483)

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

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  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>
12 days agoci: bump actions/cache from 4 to 5 (#5482)
dependabot[bot] [Mon, 15 Dec 2025 03:03:37 +0000 (04:03 +0100)]
ci: bump actions/cache from 4 to 5 (#5482)

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

---
updated-dependencies:
- dependency-name: actions/cache
  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>
2 weeks agoimprove batch packet processing logic (#5478)
Marten Seemann [Thu, 11 Dec 2025 04:41:22 +0000 (12:41 +0800)]
improve batch packet processing logic (#5478)

1. More aggressively process packets that arrive during the processing
   of previously packets. This is especially relevant during the
   handshake.
2. Limit batches to 32 packets (previously: 256).

3 weeks agoallow packing of ACKs in coalesced packets (#5477)
Marten Seemann [Fri, 5 Dec 2025 06:07:52 +0000 (14:07 +0800)]
allow packing of ACKs in coalesced packets (#5477)

Sending ACKs in coalesced packets means that we can coalesce more
aggressively, reducing the number of packets sent during the handshake.

This makes use of the recently added AckFrame.Truncate function to
ensure that the ACK frame will always fit.

3 weeks agowire: add a function to trunctate an ACK frame to a given size (#5476)
Marten Seemann [Fri, 5 Dec 2025 03:42:50 +0000 (11:42 +0800)]
wire: add a function to trunctate an ACK frame to a given size (#5476)

3 weeks agowire: add a benchmark for ACK frame serialization (#5473)
Marten Seemann [Thu, 4 Dec 2025 05:14:38 +0000 (13:14 +0800)]
wire: add a benchmark for ACK frame serialization (#5473)

3 weeks agoackhandler: remove ReceivedPacketHandler interface, use struct directly (#5472)
Marten Seemann [Thu, 4 Dec 2025 02:38:48 +0000 (10:38 +0800)]
ackhandler: remove ReceivedPacketHandler interface, use struct directly (#5472)

3 weeks agorefactor connection tests to remove ReceivedPacketHandler mock (#5468)
Marten Seemann [Wed, 3 Dec 2025 05:10:38 +0000 (13:10 +0800)]
refactor connection tests to remove ReceivedPacketHandler mock (#5468)

3 weeks agoackhandler: disentangle ReceivedPacketHandler and SentPacketHandler (#5469)
Marten Seemann [Wed, 3 Dec 2025 04:45:42 +0000 (12:45 +0800)]
ackhandler: disentangle ReceivedPacketHandler and SentPacketHandler (#5469)

3 weeks agoallow processing of multiple packets before handshake completion (#5451)
Marten Seemann [Wed, 3 Dec 2025 03:59:22 +0000 (11:59 +0800)]
allow processing of multiple packets before handshake completion (#5451)

This is especially valuable:
* on the server side: if the ClientHello spans multiple packets (as it
  now does due to PQ cryptography)
* on the client side: if the server’s certificate span multiple packets
  as they do)

This avoids generating a flood of acknowledgments, since packets in the
Initial and in the Handshake packet number space are acknowledged
immediately.

3 weeks agouse synctest for 0-RTT integration tests (#5465)
Marten Seemann [Tue, 2 Dec 2025 16:51:08 +0000 (00:51 +0800)]
use synctest for 0-RTT integration tests (#5465)

3 weeks agouse synctest for the RTT and reordering tests (#5464)
Marten Seemann [Tue, 2 Dec 2025 15:53:52 +0000 (23:53 +0800)]
use synctest for the RTT and reordering tests (#5464)

3 weeks agosimnet: move latency configuration to Router, simplify queueing logic (#5463)
Marten Seemann [Tue, 2 Dec 2025 15:05:26 +0000 (23:05 +0800)]
simnet: move latency configuration to Router, simplify queueing logic (#5463)

* simnet: update to new CoDel queueing logic

This includes all changes up to
https://github.com/MarcoPolo/simnet/commit/b41360a50f1115e66d3ead762fd679faba0cc1dd.

* simnet: remove bandwidth link setting, simplify queueing logic

4 weeks agofix flaky TestConnectionCongestionControl (#5467)
Copilot [Fri, 28 Nov 2025 12:35:50 +0000 (13:35 +0100)]
fix flaky TestConnectionCongestionControl (#5467)

* Initial plan

* Fix flaky TestConnectionCongestionControl by adding missing synctest.Wait()

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>
4 weeks agohandshake: fix QUIC events with session tickets disabled on Go 1.26 (#5462)
Marten Seemann [Wed, 26 Nov 2025 05:23:25 +0000 (13:23 +0800)]
handshake: fix QUIC events with session tickets disabled on Go 1.26 (#5462)

4 weeks agouse synctest in the session resumption test (#5424)
Marten Seemann [Wed, 26 Nov 2025 02:57:27 +0000 (10:57 +0800)]
use synctest in the session resumption test (#5424)

4 weeks agohandshake: add a benchmark for token decoding (#5460)
Marten Seemann [Tue, 25 Nov 2025 04:36:51 +0000 (12:36 +0800)]
handshake: add a benchmark for token decoding (#5460)

4 weeks agohandshake: pass cipherSuite by value instead of pointer (#5459)
Marten Seemann [Tue, 25 Nov 2025 03:19:56 +0000 (11:19 +0800)]
handshake: pass cipherSuite by value instead of pointer (#5459)

4 weeks agoci: bump actions/checkout from 5 to 6 (#5458)
dependabot[bot] [Mon, 24 Nov 2025 01:57:49 +0000 (02:57 +0100)]
ci: bump actions/checkout from 5 to 6 (#5458)

Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [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/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  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>
5 weeks agoqlog the datagram_id for long header and coalesced packets (#5455)
Marten Seemann [Sat, 22 Nov 2025 01:50:59 +0000 (09:50 +0800)]
qlog the datagram_id for long header and coalesced packets (#5455)

* simplify logging of short header packets

No functional change expected.

* qlog: add datagram_id field to packet evens

* qlog the datagram_id for long header and coalesced packets

No datagram_id is logged for short header packets.

5 weeks agoqlog: add a DebugEvent (#5456)
Marten Seemann [Sat, 22 Nov 2025 01:28:19 +0000 (09:28 +0800)]
qlog: add a DebugEvent (#5456)

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>