Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] master from quic-go:master #209

Open
wants to merge 313 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
313 commits
Select commit Hold shift + click to select a range
3449ace
example: remove -qlog flag in favor of QLOGDIR (#4243)
marten-seemann Jan 14, 2024
d3c2020
http3: add a basic README (#4246)
marten-seemann Jan 17, 2024
b3eb375
remove shutdown method on the Connection (#4249)
marten-seemann Jan 19, 2024
cb1775a
send out the CONNECTION_REFUSED error when refusing a connection (#4250)
marten-seemann Jan 19, 2024
594440b
don't remove closed connections from the server's accept queue (#4245)
marten-seemann Jan 19, 2024
4407c60
handshake: unexport Set{Read,Write}Key methods on the cryptoSetup (#4…
marten-seemann Jan 20, 2024
bda5b7e
handshake: fix documentation for updatableAEAD.SetWriteKey (#4256)
putyWang Jan 23, 2024
892851e
add Transport config options to limit the number of handshakes (#4248)
marten-seemann Jan 23, 2024
a2cf43d
remove the RequireAddressValidation callback from the Config (#4253)
marten-seemann Jan 23, 2024
a968e25
fix incorrect statement about connection ID lengths in the Transport …
marten-seemann Jan 24, 2024
2a7a11f
remove unneeded nil check for new connections in the server (#4260)
marten-seemann Jan 24, 2024
baeec0f
ci: update to Go 1.22rc2 (#4267)
marten-seemann Jan 25, 2024
d3974e1
fix flaky handshake limiting test (#4270)
marten-seemann Jan 25, 2024
808f849
http3: only use :protocol pseudo-header for Extended CONNECT (#4261)
taoso Jan 26, 2024
c82c37a
fix flaky accept queue test (#4280)
marten-seemann Jan 29, 2024
9b83ac2
fix flaky handshake limiting test (#4281)
marten-seemann Jan 29, 2024
940feef
only log the discarding of Handshake keys once (#4274)
marten-seemann Jan 29, 2024
03ba124
testutils: add a perspective function parameter to ComposeInitialPack…
marten-seemann Jan 29, 2024
34c4d89
fix flaky outgoing streams map test (#4283)
marten-seemann Jan 29, 2024
be4838b
wire: remove FrameParser interface, expose FrameParser struct (#4284)
marten-seemann Jan 29, 2024
d330d2e
remove unused RTTStats from the received packet handler (#4287)
marten-seemann Jan 30, 2024
da25787
testutils: make the package public (#4290)
marten-seemann Jan 31, 2024
e65e99f
ci: remove unused depguard check for qtls (#4291)
marten-seemann Jan 31, 2024
86441f1
ci: make Codecov ignore testutils and testdata (#4292)
marten-seemann Jan 31, 2024
72c79db
testutils: expose aliases for all frame types (#4293)
marten-seemann Jan 31, 2024
69ba7ac
ackhandler: don't delay ACKs for Initial and Handshake packets (#4288)
marten-seemann Feb 1, 2024
fbaa941
protocol: rename VersionNumber to Version (#4295)
marten-seemann Feb 1, 2024
0582e93
wire: optimize generation of Version Negotiation packets (#4278)
marten-seemann Feb 1, 2024
2fbe713
protocol: don't capitalize Perspective.String (#4296)
marten-seemann Feb 1, 2024
f3c4be6
qlog: remove unneeded mutex from the ConnectionTracer (#4299)
marten-seemann Feb 1, 2024
0344401
qlog: rename qlog.go to connection_tracer.go (#4301)
marten-seemann Feb 2, 2024
225d2a3
qlog: disentangle the ConnectionTracer from the qlog writer (#4300)
marten-seemann Feb 2, 2024
b675e34
logging: add a Debug function to the Tracer (#4297)
marten-seemann Feb 3, 2024
07ec324
logging: add a Close function to the Tracer (#4298)
marten-seemann Feb 3, 2024
198de32
don't enqueue stream for sending on reordered MAX_STREAM_DATA frames …
marten-seemann Feb 3, 2024
dc49f56
fix flaky 0-RTT packet loss recovery test (#4306)
marten-seemann Feb 3, 2024
c22a3c8
handshake: validate HKDF-Expand-Label against crypto/tls implementati…
marten-seemann Feb 5, 2024
ab17a5d
qlog: rename generation to key_phase on key_updated and key_discarded…
marten-seemann Feb 8, 2024
43baf2d
README: add frp to list of projects (#4316)
bt90 Feb 8, 2024
013949c
ci: update to Go 1.22.0 (#4312)
marten-seemann Feb 8, 2024
8e93770
avoid lock contention when accepting new connections (#4313)
marten-seemann Feb 9, 2024
229ff4f
ci: update Codecov action to v4 (#4321)
marten-seemann Feb 9, 2024
f54a32e
don't preallocate the slice for STREAM frames when composing a packet…
marten-seemann Feb 9, 2024
02e4506
handshake: add benchmarks for the Initial AEAD (#4320)
marten-seemann Feb 9, 2024
4790797
only check for stateless resets if packet doesn't belong to a connect…
marten-seemann Feb 9, 2024
284996e
qtls: protect the tls.ClientSessionCache implementation with a mutex …
marten-seemann Feb 9, 2024
0a7823c
ci: update golangci-lint to v1.56.1 and golangci-lint action to v4 (#…
marten-seemann Feb 11, 2024
07a17ff
remove unused GetVersion function from quicConn interface (#4327)
marten-seemann Feb 11, 2024
69fe378
reenable previously disabled server unit test (#4328)
marten-seemann Feb 11, 2024
7b8ceaa
remove unused getPerspective function from quicConn interface (#4329)
marten-seemann Feb 11, 2024
c786a46
remove unused perspective arg from packetHandlerMap.ReplaceWithClosed…
marten-seemann Feb 11, 2024
0405634
http3: don't automatically set RoundTripper.QuicConfig.EnableDatagram…
marten-seemann Mar 3, 2024
9813766
http3: send SETTINGS_ENABLE_CONNECT_PROTOCOL (for Extended CONNECT) (…
marten-seemann Mar 3, 2024
c5f7096
http3: reject duplicate control streams opened by the server (#4342)
marten-seemann Mar 3, 2024
d41c0b6
http3: reject duplicate control streams opened by the client (#4344)
marten-seemann Mar 3, 2024
ba1fbbe
ci: enable Dependabot for GitHub Actions (#4343)
marten-seemann Mar 3, 2024
d6269b7
fix deadlock when concurrently closing server and transport (#4332)
sukunrt Mar 3, 2024
60b4a9c
ci: bump actions/upload-artifact from 3 to 4 (#4346)
dependabot[bot] Mar 3, 2024
b21bd58
ci: bump docker/build-push-action from 4 to 5 (#4347)
dependabot[bot] Mar 3, 2024
5a70d18
ci: bump docker/login-action from 2 to 3 (#4348)
dependabot[bot] Mar 3, 2024
dbbb6ca
ci: bump docker/setup-qemu-action from 2 to 3 (#4345)
dependabot[bot] Mar 3, 2024
067e7db
ci: bump docker/setup-buildx-action from 2 to 3 (#4349)
dependabot[bot] Mar 3, 2024
f856163
handshake: embed the mask as an array into the aesHeaderProtector (#4…
marten-seemann Mar 3, 2024
71f5ae5
handshake: optimize AEAD handling for long header sealers and openers…
marten-seemann Mar 3, 2024
a70419b
unmap IPv4-mapped IPv6 addresses (#4309)
thijsvandien Mar 5, 2024
ac12689
improve API documentation for OpenStreamSync (#4352)
wlynxg Mar 7, 2024
2abbd41
qlog: introduce a basic tracer for non-connection events
marten-seemann Feb 2, 2024
3a7a53f
qlog: log packet drops outside of a QUIC connection
marten-seemann Feb 2, 2024
aff90a6
qlog: log sent Version Negotiation packets
marten-seemann Feb 2, 2024
55c05ac
qlog: log sent packets outside of a QUIC connection
marten-seemann Feb 2, 2024
30e01b9
use the transport tracer in integration tests
marten-seemann Feb 3, 2024
5fd5d77
Merge pull request #4305 from quic-go/qlog-tracer
marten-seemann Mar 9, 2024
06b4214
remove unused ReceiveStream.CloseRemote method (#4357)
marten-seemann Mar 9, 2024
f147639
update gomock to v0.4.0 (#4361)
marten-seemann Mar 11, 2024
ca787d6
add an AddrVerified field to the ClientHelloInfo (#4360)
marten-seemann Mar 11, 2024
497d3f5
http3: add a RoundTripOpt to check the server's SETTINGS frame (#4355)
marten-seemann Mar 12, 2024
9971fed
use Transport.VerifySourceAddress to control the Retry Mechanism (#4362)
marten-seemann Mar 15, 2024
4a99b81
close connection when an abnormally large number of frames are queued…
marten-seemann Mar 18, 2024
6325696
quicvarint: use int return value instead of internal protocol.ByteCou…
marten-seemann Mar 19, 2024
e14dd2f
http3: improve documentation for Server.SetQuicHeaders (#4376)
marten-seemann Mar 22, 2024
603e077
http3: make it possible to send HEAD requests in 0-RTT (#4378)
marten-seemann Mar 22, 2024
684b80a
http3: don't modify any fields of the http.Request when doing 0-RTT (…
marten-seemann Mar 23, 2024
7d90254
http3: fix capitalization of Server.SetQUICHeaders (#4377)
marten-seemann Mar 23, 2024
a19f99e
add an integration test for 0-RTT GET requests (#4386)
marten-seemann Mar 23, 2024
89020e3
http3: rename Server.QuicConfig to Server.QUICConfig (#4384)
marten-seemann Mar 23, 2024
49b9965
http3: rename RoundTripper.QuicConfig to RoundTripper.QUICConfig (#4385)
marten-seemann Mar 23, 2024
268208f
http3: refactor the client's and server's unidirectional stream handl…
marten-seemann Mar 24, 2024
d540f54
http3: reject duplicate QPACK decoder and encoder streams (#4388)
marten-seemann Mar 24, 2024
97d31da
http3: introduce a Settingser to query the client's SETTINGS (#4389)
marten-seemann Mar 31, 2024
18d6d29
don't set the Allow0RTT flag for the client in the HTTP integration t…
marten-seemann Mar 31, 2024
f389b63
http3: reference the correct RFCs in doc comments (#4399)
marten-seemann Apr 1, 2024
27a06f3
introduce a ConnectionTracingID type for the ConnectionTracingKey (#4…
marten-seemann Apr 2, 2024
183d42a
http3: pass tracing ID instead of quic.Connection to stream hijackers…
marten-seemann Apr 2, 2024
e310b80
expose the connection tracing ID on the stream context (#4414)
marten-seemann Apr 6, 2024
eb310a6
http3: expose an OpenStream method on the RoundTripper (#4409)
marten-seemann Apr 9, 2024
ee698b3
http3: cancel reading on request stream if request processing fails (…
marten-seemann Apr 9, 2024
9efc324
http3: remove Settingser, StreamCreator, return Connection from Hijac…
marten-seemann Apr 11, 2024
da410a7
http3: expose a SingleDestinationRoundTripper (#4424)
marten-seemann Apr 11, 2024
b096e94
http3: hide SendDatagram and ReceiveDatagram on the Connection (#4427)
marten-seemann Apr 11, 2024
857c31d
fix documentation for CancelWrite after Close on the send stream (#4419)
marten-seemann Apr 13, 2024
90627f6
http3: simplify buffering of small responses (#4432)
marten-seemann Apr 13, 2024
25cd4b5
http3: simplify composition of the HTTP stream and request stream (#4…
marten-seemann Apr 14, 2024
afd0b06
http3: remove Accept(Uni)Stream methods from the Connection interface…
marten-seemann Apr 14, 2024
29785b2
http3: simplify tracking of content length (#4438)
marten-seemann Apr 16, 2024
457ac2c
http3: move length limiting logic to the body (#4439)
marten-seemann Apr 17, 2024
788b6f4
http3: fix flaky RoundTripper test (#4442)
marten-seemann Apr 17, 2024
e48e1d4
http3: simplify response header writing (#4441)
marten-seemann Apr 17, 2024
248189d
http3: don't remove clients on RoundTripOpt context canceled (#4448)
GeorgeMac Apr 20, 2024
9bc7bd8
http3: use a log/slog.Logger for logging (#4449)
marten-seemann Apr 20, 2024
18422ad
http3: remove RoundTripOpt.CheckSettings (#4416)
marten-seemann Apr 20, 2024
e58fa87
catch spurious UDP sendmsg errors in multiplex integration test (#4451)
marten-seemann Apr 20, 2024
3e7ba77
http3: check server SETTINGS before sending an Extended CONNECT reque…
marten-seemann Apr 20, 2024
86b53a2
http3: process 1xx status codes (#4437)
mchtech Apr 21, 2024
eb1c16b
fix flaky server accept queue test (#4453)
marten-seemann Apr 21, 2024
6a4512a
http3: fix race condition when closing the RoundTripper (#4458)
marten-seemann Apr 23, 2024
7566246
increase send and receive buffer size to 7 MiB (#4455)
bt90 Apr 23, 2024
b0eb608
testutils: add a token parameter to ComposeInitialPacket (#4391)
marten-seemann Apr 23, 2024
394aa56
flowcontrol: make it possible to call Abandon multiple times (#4459)
marten-seemann Apr 24, 2024
12aa638
disable GSO and ECN on kernels older than version 5 (#4456)
marten-seemann Apr 24, 2024
bff131e
delay completion of the send stream until the reset error was deliver…
marten-seemann Apr 26, 2024
4b87539
delay completion of the receive stream until the reset error was read…
marten-seemann Apr 26, 2024
11b1159
http3: fix race condition in client unit test (#4463)
marten-seemann Apr 26, 2024
2a37c53
http3: add support for HTTP Datagrams (RFC 9297) (#4452)
marten-seemann Apr 26, 2024
e1e5b62
README: link to the new documentation site (#4464)
marten-seemann Apr 26, 2024
083ceb4
http3: rename Settings.EnableDatagram to EnableDatagrams (#4466)
marten-seemann Apr 26, 2024
34f4d14
http3: implement on the HTTPStreamer on the ResponseWriter, flush hea…
marten-seemann Apr 27, 2024
c0250ce
include the maximum payload size in the DatagramTooLargeError (#4470)
marten-seemann Apr 27, 2024
93c4785
http3: sniff Content-Type when flushing the ResponseWriter (#4412)
WeidiDeng Apr 27, 2024
0d565fc
ci: bump golangci/golangci-lint-action from 4 to 5 (#4472)
dependabot[bot] Apr 29, 2024
8de22b2
http3: allow io.EOF when parsing a capsule fails on the first byte (#…
marten-seemann May 3, 2024
1111122
quicvarint: add function to parse a varint from a byte slice (#4475)
marten-seemann May 3, 2024
3122ca0
http3: avoid allocation when parsing the datagram's quarter stream ID…
marten-seemann May 3, 2024
a5adbd4
http3: pass original Conn to ConnContext (#4480)
rthellend May 3, 2024
a3d36f1
http3: reject reserved frame types (#4467)
marten-seemann May 4, 2024
b7a0213
fix capture of loop variable in connection probe packet tests (#4486)
marten-seemann May 4, 2024
c7b58b5
http3: refuse to send datagrams associated with a closed stream (#4488)
marten-seemann May 5, 2024
bb6f066
http3: use the stream context to detect when the send side is closed …
marten-seemann May 5, 2024
1514095
wire: use quicvarint.Parse to when parsing transport parameters (#4482)
marten-seemann May 5, 2024
f12ee48
wire: use quicvarint.Parse when parsing frames (#4484)
marten-seemann May 5, 2024
347a4af
wire: refactor header parsing to use quicvarint.Parse (#4481)
marten-seemann May 5, 2024
b4210f8
wire: reduce allocations when parsing transport parameters (#4483)
marten-seemann May 5, 2024
83eeb9c
fix incorrect reuse of UDP connection in handshake benchmark (#4491)
marten-seemann May 5, 2024
5aac435
http3: fix race condition when creating state tracking stream (#4493)
marten-seemann May 5, 2024
03a32d0
ci: run benchmarks (#4492)
marten-seemann May 5, 2024
475b4f0
http3: ignore deadline errors when tracking QUIC stream states (#4495)
marten-seemann May 7, 2024
2ed1593
ci: update golangci-lint-action to v6 and golangci-lint to v1.58.0 (#…
marten-seemann May 7, 2024
4f4da04
ci: disable exhaustive linter for test files (#4499)
marten-seemann May 7, 2024
f1b473d
add an integration test for DPLPMTUD (#4498)
marten-seemann May 7, 2024
66f968b
reject sending of DATAGRAM frames that exceed the current MTU (#4497)
marten-seemann May 7, 2024
d1c1f18
wire: write configured value of max_udp_payload_size transport parame…
marten-seemann May 8, 2024
e90a0d4
increase initial packet size to 1280 bytes (for both IPv4 and IPv6) (…
marten-seemann May 9, 2024
f3d76b3
make the initial packet size configurable (#4503)
marten-seemann May 9, 2024
508b402
update all golang.org/x dependencies (#4506)
marten-seemann May 11, 2024
2557fb9
initialize the MTU discoverer when processing the transport parameter…
marten-seemann May 14, 2024
056a332
retry the PMTUD integration test up to 3 times (#4519)
marten-seemann May 14, 2024
e41d1f9
logging / qlog: add support for DPLPMTUD (#4517)
marten-seemann May 14, 2024
f3cecf9
http3: rename ListenAndServe to ListenAndServeTLS (#4522)
ETZhangSX May 15, 2024
e2fbf3c
http3: fix memory leak in stream state tracking (#4523)
GeorgeMac May 19, 2024
0d1e27d
introduce Transport.ConnContext, use client's context on the connecti…
marten-seemann May 27, 2024
21b643e
deprecate the ConnectionTracingKey (#4532)
marten-seemann May 28, 2024
ae90c76
http3: fix flaky Extended CONNECT unit test (#4537)
marten-seemann May 28, 2024
723a188
remove unneeded stream context cancellation on shutdown (#4535)
marten-seemann May 28, 2024
8a3d90f
ci: set timeout for jobs (#4538)
marten-seemann May 29, 2024
82a3847
http3: fix another flaky Extended CONNECT test (#4539)
marten-seemann May 29, 2024
375fc59
remove unused SetMax method on the mtuDiscoverer (#4543)
marten-seemann Jun 1, 2024
5446b5f
http3: use the connection, not the stream context, on the server side…
marten-seemann Jun 3, 2024
73a5370
use a chan instead of a context to track handshake completion (#4547)
marten-seemann Jun 3, 2024
dea2eaf
remove unused function parameter from qtls.SetupConfigForServer (#4549)
marten-seemann Jun 3, 2024
459a6f3
fix the server's 0-RTT rejection logic when using GetConfigForClient …
marten-seemann Jun 3, 2024
e66a925
metrics: add a basic setup, collect metrics for the server
marten-seemann Jan 13, 2024
a555a14
metrics: make the Prometheus registerer configurable
marten-seemann Jan 13, 2024
2968b93
metrics: add a very basic ConnectionTracer
marten-seemann Jan 13, 2024
685c132
metrics: measure the handshake duration
marten-seemann Jan 15, 2024
a620f1a
metrics: save the reason a connection was closed
marten-seemann Jan 15, 2024
950de0d
Merge pull request #4534 from quic-go/prometheus
marten-seemann Jun 4, 2024
0db3544
make Path MTU Discovery resilient to random packet loss (#4545)
marten-seemann Jun 4, 2024
07acaad
add context to EarlyConnection.NextConnection, handle handshake failu…
marten-seemann Jun 5, 2024
44e0147
pass a context to Transport.ConnContext (#4536)
marten-seemann Jun 5, 2024
91221b4
metrics: simplify constructor for the default connection tracer (#4555)
marten-seemann Jun 5, 2024
cc9a5ee
qlog: rename DefaultTracer to DefaultConnectionTracer (#4556)
marten-seemann Jun 5, 2024
0c84297
fix incorrect statement about Config.DisablePathMTUDiscovery (#4558)
marten-seemann Jun 6, 2024
4d0562d
metrics: add an example Grafana dashboard (#4559)
marten-seemann Jun 6, 2024
8cae5d8
metrics: create a new tracer on every call of DefaultConnectionTracer…
marten-seemann Jun 7, 2024
b19f2f9
metrics: use the default metrics tracer in integration tests (#4562)
marten-seemann Jun 10, 2024
1cbd54f
example: remove Dockerfile (#4568)
marten-seemann Jun 16, 2024
10f8bd4
http3: fix race condition between Server.Serve and Server.Close (#4572)
marten-seemann Jun 22, 2024
2a082f9
http3: allow re-dialing of connection after a dial error (#4573)
marten-seemann Jun 23, 2024
b4f3839
fix stream documentation for StreamError return values (#4575)
mengelbart Jun 24, 2024
2da1681
ci: bump docker/build-push-action from 5 to 6 (#4576)
dependabot[bot] Jun 24, 2024
8f11104
use a net.ErrClosed when returning Accept from a closed server (#4569)
marten-seemann Jun 24, 2024
7379f1f
handshake: ignore unknown QUIC events from crypto/tls (#4577)
marten-seemann Jun 28, 2024
b52c339
introduce a StreamLimitReachedError for Connection.Open{Uni}Stream (#…
marten-seemann Jun 28, 2024
7825250
ci: use Go 1.23rc2 for unit and integration tests (#4571)
marten-seemann Jul 18, 2024
82b2752
handshake: remove unneeded tokenProtector interface (#4585)
marten-seemann Jul 20, 2024
c40d4cc
ackhandler: optimize received packet tracking (#4584)
marten-seemann Jul 20, 2024
72092fb
move connection logging to a separate file, absorb logutils package (…
marten-seemann Jul 21, 2024
bc642d8
simplify handling of CRYPTO frames, remove cryptoDataHandler interfac…
marten-seemann Jul 21, 2024
5f8d146
wire: optimize parsing of long header packets (#4589)
marten-seemann Jul 21, 2024
2955081
remove trivial IPv4 helper function (#4591)
marten-seemann Jul 21, 2024
e179048
wire: simplify packet number parsing, remove utils.ByteOrder interfac…
marten-seemann Jul 21, 2024
8451b0a
utils: remove scarcely used time helper functions (#4593)
marten-seemann Jul 23, 2024
9b70412
remove mock TokenStore implementation (#4597)
marten-seemann Jul 24, 2024
fc79a77
remove unused framer interface (#4599)
marten-seemann Jul 24, 2024
42f04d4
refactor frame packing to logic to not access the streams map (#4596)
marten-seemann Jul 28, 2024
047cc90
ackhandler: reduce allocations for tracking sent packets (#4602)
marten-seemann Jul 31, 2024
8d821f4
mark stream completed when CancelWrite is called after receiving STOP…
sukunrt Aug 1, 2024
b8ea5c7
simplify generation of STREAM_DATA_BLOCKED frames (#4608)
marten-seemann Aug 1, 2024
bb4eb85
reduce allocations when handling crypto data (#4615)
marten-seemann Aug 3, 2024
87f2894
handshake: remove gomock tls.ClientSessionCache implementation (#4619)
marten-seemann Aug 3, 2024
e737d4a
wire: speed up parsing of headers with arbitrary length connection ID…
marten-seemann Aug 3, 2024
86d5044
remove trivial mock implementation of the cryptoStream interface (#4620)
marten-seemann Aug 3, 2024
a147bee
simplify frame queuing logic on 0-RTT rejection (#4607)
marten-seemann Aug 4, 2024
f5ceb73
handshake: generate CRYPTO_ERRORs for internal_error TLS alerts (#4601)
marten-seemann Aug 4, 2024
931166b
remove unneeded cryptoStream interface (#4617)
marten-seemann Aug 4, 2024
f96923b
logging: rename VersionNumber to Version (#4621)
marten-seemann Aug 4, 2024
d1f9af4
implement qlog JSONSEQ format, bump qlog version (#4609)
marten-seemann Aug 4, 2024
af9fa7a
queue stream-related control frames in the respective stream (#4610)
marten-seemann Aug 4, 2024
7c471aa
http3: implement server idle timeout support (#4587)
rs Aug 4, 2024
46fc42d
only declare send stream completed when RESET_STREAM is acknowledged …
marten-seemann Aug 6, 2024
0b033db
fix logging of short header connection IDs (#4626)
marten-seemann Aug 7, 2024
39e2a69
remove deprecated quic.VersionNumber and logging.VersionNumber (#4627)
marten-seemann Aug 12, 2024
b381169
ci: migrate race detector test to GitHub Actions (#4635)
marten-seemann Aug 17, 2024
d067fe4
bump Go version in go.mod, stop testing on Go 1.21 (#4633)
marten-seemann Aug 17, 2024
17fb3b9
http3: add client-side HTTP Trailer support (#4581)
sudorandom Aug 23, 2024
920bfb4
http3: reject pseudo header fields in trailers (#4639)
marten-seemann Aug 23, 2024
229937c
http3: reject the Transfer-Encoding header field (#4646)
marten-seemann Aug 28, 2024
7c3544c
http3: set ContentLength to -1 if no Content-Length header is set (#4…
marten-seemann Aug 30, 2024
0b32adc
interop: simplify API of http09.Server (#4651)
marten-seemann Aug 31, 2024
1a25053
update qpack to v0.5.0 (#4653)
marten-seemann Sep 1, 2024
26a3525
http3: reject connection-specific header fields, check value of TE (#…
marten-seemann Sep 1, 2024
135b8c0
interop: fix server setup for the HTTP/0.9 server (#4658)
marten-seemann Sep 3, 2024
4be70e0
protocol: use the packet number decoding / encoding logic from the RF…
marten-seemann Sep 5, 2024
ad8f3c0
fix handling of corrupted coalesced 1-RTT packets (#4663)
marten-seemann Sep 7, 2024
09c2ac8
http3: add HTTP Trailer support for servers (#4630)
sudorandom Sep 7, 2024
9478a67
ci: control concurrency of the interop Docker image builder (#4665)
marten-seemann Sep 7, 2024
4f48b2c
update qpack to v0.5.1 (#4664)
marten-seemann Sep 7, 2024
b92bf0c
http3: initialize trailer map with empty trailer entries when parsing…
sudorandom Sep 7, 2024
1ad36eb
http3: avoid re-parsing of the Content-Length header for responses (#…
marten-seemann Sep 8, 2024
8fc04bf
fix calculation of idle timeout when the peer sets max_idle_timeout t…
marten-seemann Sep 8, 2024
e52027f
qlog: migrate tests away from Ginkgo (#4640)
marten-seemann Sep 11, 2024
72be861
logging: migrate tests away from Ginkgo (#4641)
marten-seemann Sep 11, 2024
a21f6c1
qerr: move away from Ginkgo (#4649)
marten-seemann Sep 11, 2024
889dc81
qtls: migrate tests away from Ginkgo (#4642)
marten-seemann Sep 12, 2024
3f3e12b
interop: move away from Ginkgo (#4652)
marten-seemann Sep 12, 2024
196c4bb
protocol: move away from Ginkgo (#4650)
marten-seemann Sep 12, 2024
4aee0c0
quicvarint: migrate tests away from Ginkgo (#4662)
marten-seemann Sep 12, 2024
06cfeb1
ringbuffer: migrate test away from Ginkgo (#4671)
marten-seemann Sep 12, 2024
5247a8e
testdata: migrate tests away from Ginkgo (#4670)
marten-seemann Sep 12, 2024
7a10ed6
utils: remove unused methods and constructor from RTTStats (#4672)
marten-seemann Sep 12, 2024
672f906
wire: migrate tests away from Ginkgo (#4643)
marten-seemann Sep 13, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
42 changes: 0 additions & 42 deletions .circleci/config.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .clusterfuzzlite/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ FROM gcr.io/oss-fuzz-base/base-builder-go:v1
ARG TARGETPLATFORM
RUN echo "TARGETPLATFORM: ${TARGETPLATFORM}"

ENV GOVERSION=1.20.7
ENV GOVERSION=1.23.0

RUN platform=$(echo ${TARGETPLATFORM} | tr '/' '-') && \
filename="go${GOVERSION}.${platform}.tar.gz" && \
Expand Down
6 changes: 6 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
14 changes: 9 additions & 5 deletions .github/workflows/build-interop-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,24 @@ on:
- master
tags:
- 'v*'


concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
interop:
runs-on: ${{ fromJSON(vars['DOCKER_RUNNER_UBUNTU'] || '"ubuntu-latest"') }}
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v3
with:
platforms: linux/amd64,linux/arm64
- name: Login to Docker Hub
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
Expand All @@ -34,7 +38,7 @@ jobs:
echo 'tag=latest' | tee -a $GITHUB_OUTPUT;
echo 'gitref=${{ github.sha }}' | tee -a $GITHUB_OUTPUT;
fi
- uses: docker/build-push-action@v4
- uses: docker/build-push-action@v6
with:
context: "{{defaultContext}}:interop"
platforms: linux/amd64,linux/arm64
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/cross-compile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@ jobs:
strategy:
fail-fast: false
matrix:
go: [ "1.20.x", "1.21.x" ]
go: [ "1.22.x", "1.23.x" ]
runs-on: ${{ fromJSON(vars['CROSS_COMPILE_RUNNER_UBUNTU'] || '"ubuntu-latest"') }}
name: "Cross Compilation (Go ${{matrix.go}})"
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
- uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go }}
- name: Install build utils
Expand Down
49 changes: 33 additions & 16 deletions .github/workflows/integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,57 +6,74 @@ jobs:
fail-fast: false
matrix:
os: [ "ubuntu" ]
go: [ "1.20.x", "1.21.x" ]
go: [ "1.22.x", "1.23.x" ]
race: [ false ]
include:
- os: "ubuntu"
go: "1.23.x"
race: true
- os: "windows"
go: "1.21.x"
go: "1.23.x"
race: false
- os: "macos"
go: "1.21.x"
go: "1.23.x"
race: false
runs-on: ${{ fromJSON(vars[format('INTEGRATION_RUNNER_{0}', matrix.os)] || format('"{0}-latest"', matrix.os)) }}
timeout-minutes: 30
defaults:
run:
shell: bash # by default Windows uses PowerShell, which uses a different syntax for setting environment variables
env:
DEBUG: false # set this to true to export qlogs and save them as artifacts
TIMESCALE_FACTOR: 3
name: Integration Tests (${{ matrix.os }}, Go ${{ matrix.go }})
name: "Integration (${{ matrix.os }}, Go ${{ matrix.go }}, race: ${{ matrix.race }})"
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
- uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go }}
- run: go version
- name: set qlogger
if: env.DEBUG == 'true'
run: echo "QLOGFLAG= -qlog" >> $GITHUB_ENV
- name: Enable race detector
if: ${{ matrix.race }}
run: echo "RACEFLAG= -race" >> $GITHUB_ENV
- name: Run other tests
run: |
go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace -skip-package self,versionnegotiation integrationtests
go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/versionnegotiation -- ${{ env.QLOGFLAG }}
go run github.com/onsi/ginkgo/v2/ginkgo ${{ env.RACEFLAG }} -r -v -randomize-all -randomize-suites -trace -skip-package self,versionnegotiation integrationtests
go run github.com/onsi/ginkgo/v2/ginkgo ${{ env.RACEFLAG }} -r -v -randomize-all -randomize-suites -trace integrationtests/versionnegotiation -- ${{ env.QLOGFLAG }}
- name: Run self tests, using QUIC v1
if: success() || failure() # run this step even if the previous one failed
run: go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/self -- -version=1 ${{ env.QLOGFLAG }}
run: go run github.com/onsi/ginkgo/v2/ginkgo ${{ env.RACEFLAG }} -r -v -randomize-all -randomize-suites -trace integrationtests/self -- -version=1 ${{ env.QLOGFLAG }}
- name: Run self tests, using QUIC v2
if: success() || failure() # run this step even if the previous one failed
run: go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/self -- -version=2 ${{ env.QLOGFLAG }}
if: ${{ !matrix.race && (success() || failure()) }} # run this step even if the previous one failed
run: go run github.com/onsi/ginkgo/v2/ginkgo ${{ env.RACEFLAG }} -r -v -randomize-all -randomize-suites -trace integrationtests/self -- -version=2 ${{ env.QLOGFLAG }}
- name: Run self tests, with GSO disabled
if: ${{ matrix.os == 'ubuntu' && (success() || failure()) }} # run this step even if the previous one failed
env:
QUIC_GO_DISABLE_GSO: true
run: go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/self -- -version=1 ${{ env.QLOGFLAG }}
run: go run github.com/onsi/ginkgo/v2/ginkgo ${{ env.RACEFLAG }} -r -v -randomize-all -randomize-suites -trace integrationtests/self -- -version=1 ${{ env.QLOGFLAG }}
- name: Run self tests, with ECN disabled
if: ${{ matrix.os == 'ubuntu' && (success() || failure()) }} # run this step even if the previous one failed
if: ${{ !matrix.race && matrix.os == 'ubuntu' && (success() || failure()) }} # run this step even if the previous one failed
env:
QUIC_GO_DISABLE_ECN: true
run: go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/self -- -version=1 ${{ env.QLOGFLAG }}
run: go run github.com/onsi/ginkgo/v2/ginkgo ${{ env.RACEFLAG }} -r -v -randomize-all -randomize-suites -trace integrationtests/self -- -version=1 ${{ env.QLOGFLAG }}
- name: Run tests (32 bit)
if: ${{ matrix.os != 'macos' && (success() || failure()) }} # run this step even if the previous one failed
if: ${{ !matrix.race && matrix.os != 'macos' && (success() || failure()) }} # run this step even if the previous one failed
env:
GOARCH: 386
run: |
go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace -skip-package self,versionnegotiation integrationtests
go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/versionnegotiation -- ${{ env.QLOGFLAG }}
go run github.com/onsi/ginkgo/v2/ginkgo -r -v -randomize-all -randomize-suites -trace integrationtests/self -- ${{ env.QLOGFLAG }}
- name: Run benchmarks
if: ${{ !matrix.race }}
run: go test -v -run=^$ -bench=. ./integrationtests/self
- name: save qlogs
if: ${{ always() && env.DEBUG == 'true' }}
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: qlogs
name: qlogs-${{ matrix.os }}-go${{ matrix.go }}-race${{ matrix.race }}
path: integrationtests/self/*.qlog
retention-days: 7
42 changes: 22 additions & 20 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ on: [push, pull_request]
jobs:
check:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
- uses: actions/setup-go@v5
with:
skip-pkg-cache: true
go-version: "1.20.x"
go-version: "1.23.x"
- name: Check that no non-test files import Ginkgo or Gomega
run: .github/workflows/no_ginkgo.sh
- name: Check for //go:build ignore in .go files
Expand Down Expand Up @@ -36,50 +36,52 @@ jobs:
go mod vendor
golangci-lint:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
go: [ "1.22.x", "1.23.x" ]
env:
GOLANGCI_LINT_VERSION: v1.60.1
name: golangci-lint (Go ${{ matrix.go }})
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
- uses: actions/setup-go@v5
with:
go-version: "1.20.x"
go-version: ${{ matrix.go }}
- name: golangci-lint (Linux)
uses: golangci/golangci-lint-action@v3
uses: golangci/golangci-lint-action@v6
with:
skip-pkg-cache: true
args: --timeout=3m
version: v1.52.2
version: ${{ env.GOLANGCI_LINT_VERSION }}
- name: golangci-lint (Windows)
if: success() || failure() # run this step even if the previous one failed
uses: golangci/golangci-lint-action@v3
uses: golangci/golangci-lint-action@v6
env:
GOOS: "windows"
with:
skip-pkg-cache: true
args: --timeout=3m
version: v1.52.2
version: ${{ env.GOLANGCI_LINT_VERSION }}
- name: golangci-lint (OSX)
if: success() || failure() # run this step even if the previous one failed
uses: golangci/golangci-lint-action@v3
uses: golangci/golangci-lint-action@v6
env:
GOOS: "darwin"
with:
skip-pkg-cache: true
args: --timeout=3m
version: v1.52.2
version: ${{ env.GOLANGCI_LINT_VERSION }}
- name: golangci-lint (FreeBSD)
if: success() || failure() # run this step even if the previous one failed
uses: golangci/golangci-lint-action@v3
uses: golangci/golangci-lint-action@v6
env:
GOOS: "freebsd"
with:
skip-pkg-cache: true
args: --timeout=3m
version: v1.52.2
version: ${{ env.GOLANGCI_LINT_VERSION }}
- name: golangci-lint (others)
if: success() || failure() # run this step even if the previous one failed
uses: golangci/golangci-lint-action@v3
uses: golangci/golangci-lint-action@v6
env:
GOOS: "solaris" # some OS that we don't have any build tags for
with:
skip-pkg-cache: true
args: --timeout=3m
version: v1.52.2
version: ${{ env.GOLANGCI_LINT_VERSION }}
10 changes: 7 additions & 3 deletions .github/workflows/unit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ jobs:
fail-fast: false
matrix:
os: [ "ubuntu", "windows", "macos" ]
go: [ "1.20.x", "1.21.x" ]
go: [ "1.22.x", "1.23.x" ]
runs-on: ${{ fromJSON(vars[format('UNIT_RUNNER_{0}', matrix.os)] || format('"{0}-latest"', matrix.os)) }}
name: Unit tests (${{ matrix.os}}, Go ${{ matrix.go }})
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
- uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go }}
- run: go version
Expand Down Expand Up @@ -41,8 +42,11 @@ jobs:
env:
TIMESCALE_FACTOR: 20
run: go run github.com/onsi/ginkgo/v2/ginkgo -r -v -race -randomize-all -randomize-suites -trace -skip-package integrationtests
- name: Run benchmark tests
run: go test -v -run=^$ -benchtime 0.5s -bench=. $(go list ./... | grep -v integrationtests/self)
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
uses: codecov/codecov-action@v4
with:
files: coverage.txt,coverage-root.txt
env_vars: OS=${{ matrix.os }}, GO=${{ matrix.go }}
token: ${{ secrets.CODECOV_TOKEN }}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ main
mockgen_tmp.go
*.qtr
*.qlog
*.sqlog
*.txt
race.[0-9]*

Expand Down
30 changes: 16 additions & 14 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
run:
skip-files:
- internal/handshake/cipher_suite.go
linters-settings:
depguard:
type: blacklist
packages:
- github.com/marten-seemann/qtls
- github.com/quic-go/qtls-go1-19
- github.com/quic-go/qtls-go1-20
packages-with-error-message:
- github.com/marten-seemann/qtls: "importing qtls only allowed in internal/qtls"
- github.com/quic-go/qtls-go1-19: "importing qtls only allowed in internal/qtls"
- github.com/quic-go/qtls-go1-20: "importing qtls only allowed in internal/qtls"
misspell:
ignore-words:
- ect
depguard:
rules:
quicvarint:
list-mode: strict
files:
- "**/github.com/quic-go/quic-go/quicvarint/*"
- "!$test"
allow:
- $gostd

linters:
disable-all: true
Expand All @@ -27,6 +23,7 @@ linters:
- gofmt # redundant, since gofmt *should* be a no-op after gofumpt
- gofumpt
- gosimple
- govet
- ineffassign
- misspell
- prealloc
Expand All @@ -35,10 +32,15 @@ linters:
- unconvert
- unparam
- unused
- vet

issues:
exclude-files:
- internal/handshake/cipher_suite.go
exclude-rules:
- path: internal/qtls
linters:
- depguard
- path: _test\.go
linters:
- exhaustive
- prealloc
Loading