]>
git.feebdaed.xyz Git - 0xmirror/quic-go.git/log
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>
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
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.
Marten Seemann [Sun, 21 Dec 2025 09:47:59 +0000 (10:47 +0100)]
remove deprecated ClientHelloInfo (#5497)
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.
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
Marten Seemann [Sat, 20 Dec 2025 05:27:44 +0000 (06:27 +0100)]
utils: make TestAddTimestamp work in all time zones (#5492)
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
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
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>
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>
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).
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.
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)
Marten Seemann [Thu, 4 Dec 2025 05:14:38 +0000 (13:14 +0800)]
wire: add a benchmark for ACK frame serialization (#5473)
Marten Seemann [Thu, 4 Dec 2025 02:38:48 +0000 (10:38 +0800)]
ackhandler: remove ReceivedPacketHandler interface, use struct directly (#5472)
Marten Seemann [Wed, 3 Dec 2025 05:10:38 +0000 (13:10 +0800)]
refactor connection tests to remove ReceivedPacketHandler mock (#5468)
Marten Seemann [Wed, 3 Dec 2025 04:45:42 +0000 (12:45 +0800)]
ackhandler: disentangle ReceivedPacketHandler and SentPacketHandler (#5469)
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.
Marten Seemann [Tue, 2 Dec 2025 16:51:08 +0000 (00:51 +0800)]
use synctest for 0-RTT integration tests (#5465)
Marten Seemann [Tue, 2 Dec 2025 15:53:52 +0000 (23:53 +0800)]
use synctest for the RTT and reordering tests (#5464)
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
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>
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)
Marten Seemann [Wed, 26 Nov 2025 02:57:27 +0000 (10:57 +0800)]
use synctest in the session resumption test (#5424)
Marten Seemann [Tue, 25 Nov 2025 04:36:51 +0000 (12:36 +0800)]
handshake: add a benchmark for token decoding (#5460)
Marten Seemann [Tue, 25 Nov 2025 03:19:56 +0000 (11:19 +0800)]
handshake: pass cipherSuite by value instead of pointer (#5459)
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>
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.
Marten Seemann [Sat, 22 Nov 2025 01:28:19 +0000 (09:28 +0800)]
qlog: add a DebugEvent (#5456)
Marten Seemann [Fri, 21 Nov 2025 10:10:59 +0000 (18:10 +0800)]
http3: limit size of decompressed headers (#5452)
Marten Seemann [Fri, 21 Nov 2025 10:04:37 +0000 (18:04 +0800)]
qlogwriter: use synctest to make tests deterministic (#5454)
𝐘𝐨𝐬𝐞𝐛𝐲𝐭𝐞 [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
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.
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.
Marten Seemann [Thu, 20 Nov 2025 03:02:20 +0000 (11:02 +0800)]
add documentation for Conn.NextConnection (#5442)
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
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>
Marten Seemann [Wed, 19 Nov 2025 03:28:29 +0000 (11:28 +0800)]
http3: add a benchmark for header parsing (#5435)
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.
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).
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
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.
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>
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
Marten Seemann [Mon, 3 Nov 2025 15:12:13 +0000 (10:12 -0500)]
qlog: rework the ConnectionClosed event (#5417)
Marten Seemann [Sun, 2 Nov 2025 17:53:30 +0000 (12:53 -0500)]
ackhandler: fix qlogging of RTT values (#5418)
Marten Seemann [Sat, 1 Nov 2025 16:58:37 +0000 (17:58 +0100)]
use synctest for the stateless reset tests (#5415)
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.
Marten Seemann [Sat, 1 Nov 2025 15:19:03 +0000 (16:19 +0100)]
use synctest in handshake RTT tests (#5414)
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
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>
Marten Seemann [Thu, 30 Oct 2025 14:24:10 +0000 (15:24 +0100)]
quicvarint: improve panic message for numbers larger 2^62 (#5410)
Marten Seemann [Fri, 24 Oct 2025 20:03:00 +0000 (22:03 +0200)]
ci: use gcassert to check that quicvarint.Len is inlined (#5409)
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>
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>
Marten Seemann [Fri, 24 Oct 2025 10:51:09 +0000 (12:51 +0200)]
use synctest for the timeout tests (#5403)
Marten Seemann [Thu, 23 Oct 2025 17:32:01 +0000 (19:32 +0200)]
use synctest for the datagram test (#5398)
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.
Marten Seemann [Tue, 21 Oct 2025 14:28:11 +0000 (16:28 +0200)]
use synctest for the packet drop test (#5393)
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
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
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>
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
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
Marten Seemann [Wed, 15 Oct 2025 04:02:05 +0000 (12:02 +0800)]
http3: add the qlog event schema to trace header (#5383)
Marten Seemann [Sun, 12 Oct 2025 12:11:54 +0000 (20:11 +0800)]
http3: qlog reserved, unsupported and unknown frames (#5381)
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)
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
Marten Seemann [Sun, 12 Oct 2025 04:40:24 +0000 (12:40 +0800)]
http3: move qlogging of frames into the frame parser (#5378)
Marten Seemann [Sat, 11 Oct 2025 12:14:06 +0000 (20:14 +0800)]
http3: qlog sent and received DATAGRAMs (#5375)
Marten Seemann [Sat, 11 Oct 2025 11:20:01 +0000 (19:20 +0800)]
http3: qlog sent and received GOAWAY frames (#5376)
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.
Marten Seemann [Sat, 11 Oct 2025 08:13:49 +0000 (16:13 +0800)]
http3: add basic client-side qlog support (#5374)
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)
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
Marten Seemann [Sat, 11 Oct 2025 05:08:06 +0000 (13:08 +0800)]
jsontext: add support for encoding null (#5371)
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
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)
Marten Seemann [Thu, 9 Oct 2025 12:17:55 +0000 (20:17 +0800)]
fix qlogging of the short header payload length (#5365)
Marten Seemann [Thu, 9 Oct 2025 12:12:19 +0000 (20:12 +0800)]
qlog: privatize Encode methods of non-Event structs (#5364)
Marten Seemann [Thu, 9 Oct 2025 08:21:06 +0000 (16:21 +0800)]
ackhandler: fix qlogging of alarm timer expiration time (#5363)
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.
Marten Seemann [Thu, 9 Oct 2025 04:07:23 +0000 (12:07 +0800)]
qlogwriter: add support for event_schemas in the trace header (#5361)
Marten Seemann [Wed, 8 Oct 2025 14:21:35 +0000 (22:21 +0800)]
qlogwriter: implement the draft-12 trace header (#5360)
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
Marten Seemann [Mon, 6 Oct 2025 12:49:04 +0000 (20:49 +0800)]
use synctest in more connection tests (#5357)
No functional change expected.
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)
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
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
Marten Seemann [Fri, 3 Oct 2025 06:53:20 +0000 (14:53 +0800)]
fix missing tracing of restored transport parameters (#5349)
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.
Marten Seemann [Fri, 3 Oct 2025 05:25:05 +0000 (13:25 +0800)]
drop initial keys when the handshake is confirmed (#5354)
Marten Seemann [Wed, 24 Sep 2025 10:54:22 +0000 (18:54 +0800)]
use synctest to make the connection tests fully deterministic (#5317)
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
Marten Seemann [Sat, 20 Sep 2025 10:23:50 +0000 (18:23 +0800)]
add a benchmark test for data transfers (#5335)
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
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
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
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>