From 27a06f32ce2144d6bfeed905fb3c6636739aa18d Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Tue, 2 Apr 2024 17:10:12 +1300 Subject: [PATCH] introduce a ConnectionTracingID type for the ConnectionTracingKey (#4400) This is a breaking API change. Unfortunately, context values are not strongly typed, so users will have have to take to change their type assertions. --- client.go | 2 +- client_test.go | 12 ++++++------ connection.go | 8 ++++---- interface.go | 3 +++ server.go | 2 +- server_test.go | 26 +++++++++++++------------- 6 files changed, 28 insertions(+), 25 deletions(-) diff --git a/client.go b/client.go index 70dd5e19c..20ef74072 100644 --- a/client.go +++ b/client.go @@ -35,7 +35,7 @@ type client struct { conn quicConn tracer *logging.ConnectionTracer - tracingID uint64 + tracingID ConnectionTracingID logger utils.Logger } diff --git a/client_test.go b/client_test.go index 697abcaea..5a382e518 100644 --- a/client_test.go +++ b/client_test.go @@ -44,7 +44,7 @@ var _ = Describe("Client", func() { enable0RTT bool, hasNegotiatedVersion bool, tracer *logging.ConnectionTracer, - tracingID uint64, + tracingID ConnectionTracingID, logger utils.Logger, v protocol.Version, ) quicConn @@ -123,7 +123,7 @@ var _ = Describe("Client", func() { enable0RTT bool, _ bool, _ *logging.ConnectionTracer, - _ uint64, + _ ConnectionTracingID, _ utils.Logger, _ protocol.Version, ) quicConn { @@ -160,7 +160,7 @@ var _ = Describe("Client", func() { enable0RTT bool, _ bool, _ *logging.ConnectionTracer, - _ uint64, + _ ConnectionTracingID, _ utils.Logger, _ protocol.Version, ) quicConn { @@ -197,7 +197,7 @@ var _ = Describe("Client", func() { _ bool, _ bool, _ *logging.ConnectionTracer, - _ uint64, + _ ConnectionTracingID, _ utils.Logger, _ protocol.Version, ) quicConn { @@ -282,7 +282,7 @@ var _ = Describe("Client", func() { _ bool, _ bool, _ *logging.ConnectionTracer, - _ uint64, + _ ConnectionTracingID, _ utils.Logger, versionP protocol.Version, ) quicConn { @@ -325,7 +325,7 @@ var _ = Describe("Client", func() { _ bool, hasNegotiatedVersion bool, _ *logging.ConnectionTracer, - _ uint64, + _ ConnectionTracingID, _ utils.Logger, versionP protocol.Version, ) quicConn { diff --git a/connection.go b/connection.go index f8bcd613c..9f53df564 100644 --- a/connection.go +++ b/connection.go @@ -113,8 +113,8 @@ func (e *errCloseForRecreating) Error() string { return "closing connection in order to recreate it" } -var connTracingID uint64 // to be accessed atomically -func nextConnTracingID() uint64 { return atomic.AddUint64(&connTracingID, 1) } +var connTracingID atomic.Uint64 // to be accessed atomically +func nextConnTracingID() ConnectionTracingID { return ConnectionTracingID(connTracingID.Add(1)) } // A Connection is a QUIC connection type connection struct { @@ -234,7 +234,7 @@ var newConnection = func( tokenGenerator *handshake.TokenGenerator, clientAddressValidated bool, tracer *logging.ConnectionTracer, - tracingID uint64, + tracingID ConnectionTracingID, logger utils.Logger, v protocol.Version, ) quicConn { @@ -347,7 +347,7 @@ var newClientConnection = func( enable0RTT bool, hasNegotiatedVersion bool, tracer *logging.ConnectionTracer, - tracingID uint64, + tracingID ConnectionTracingID, logger utils.Logger, v protocol.Version, ) quicConn { diff --git a/interface.go b/interface.go index ca8544d8f..c3844d012 100644 --- a/interface.go +++ b/interface.go @@ -59,6 +59,9 @@ var Err0RTTRejected = errors.New("0-RTT rejected") // as well as on the context passed to logging.Tracer.NewConnectionTracer. var ConnectionTracingKey = connTracingCtxKey{} +// ConnectionTracingID is the type of the context value saved under the ConnectionTracingKey. +type ConnectionTracingID uint64 + type connTracingCtxKey struct{} // QUICVersionContextKey can be used to find out the QUIC version of a TLS handshake from the diff --git a/server.go b/server.go index afbd18fd2..2411714ef 100644 --- a/server.go +++ b/server.go @@ -92,7 +92,7 @@ type baseServer struct { *handshake.TokenGenerator, bool, /* client address validated by an address validation token */ *logging.ConnectionTracer, - uint64, + ConnectionTracingID, utils.Logger, protocol.Version, ) quicConn diff --git a/server_test.go b/server_test.go index c86b9ab90..4f68ad5ef 100644 --- a/server_test.go +++ b/server_test.go @@ -301,7 +301,7 @@ var _ = Describe("Server", func() { _ *handshake.TokenGenerator, _ bool, _ *logging.ConnectionTracer, - _ uint64, + _ ConnectionTracingID, _ utils.Logger, _ protocol.Version, ) quicConn { @@ -503,7 +503,7 @@ var _ = Describe("Server", func() { _ *handshake.TokenGenerator, _ bool, _ *logging.ConnectionTracer, - _ uint64, + _ ConnectionTracingID, _ utils.Logger, _ protocol.Version, ) quicConn { @@ -571,7 +571,7 @@ var _ = Describe("Server", func() { _ *handshake.TokenGenerator, _ bool, _ *logging.ConnectionTracer, - _ uint64, + _ ConnectionTracingID, _ utils.Logger, _ protocol.Version, ) quicConn { @@ -626,7 +626,7 @@ var _ = Describe("Server", func() { _ *handshake.TokenGenerator, _ bool, _ *logging.ConnectionTracer, - _ uint64, + _ ConnectionTracingID, _ utils.Logger, _ protocol.Version, ) quicConn { @@ -675,7 +675,7 @@ var _ = Describe("Server", func() { _ *handshake.TokenGenerator, _ bool, _ *logging.ConnectionTracer, - _ uint64, + _ ConnectionTracingID, _ utils.Logger, _ protocol.Version, ) quicConn { @@ -736,7 +736,7 @@ var _ = Describe("Server", func() { _ *handshake.TokenGenerator, _ bool, _ *logging.ConnectionTracer, - _ uint64, + _ ConnectionTracingID, _ utils.Logger, _ protocol.Version, ) quicConn { @@ -969,7 +969,7 @@ var _ = Describe("Server", func() { _ *handshake.TokenGenerator, _ bool, _ *logging.ConnectionTracer, - _ uint64, + _ ConnectionTracingID, _ utils.Logger, _ protocol.Version, ) quicConn { @@ -1036,7 +1036,7 @@ var _ = Describe("Server", func() { _ *handshake.TokenGenerator, _ bool, _ *logging.ConnectionTracer, - _ uint64, + _ ConnectionTracingID, _ utils.Logger, _ protocol.Version, ) quicConn { @@ -1106,7 +1106,7 @@ var _ = Describe("Server", func() { _ *handshake.TokenGenerator, _ bool, _ *logging.ConnectionTracer, - _ uint64, + _ ConnectionTracingID, _ utils.Logger, _ protocol.Version, ) quicConn { @@ -1176,7 +1176,7 @@ var _ = Describe("Server", func() { _ *handshake.TokenGenerator, _ bool, _ *logging.ConnectionTracer, - _ uint64, + _ ConnectionTracingID, _ utils.Logger, _ protocol.Version, ) quicConn { @@ -1217,7 +1217,7 @@ var _ = Describe("Server", func() { _ *handshake.TokenGenerator, _ bool, _ *logging.ConnectionTracer, - _ uint64, + _ ConnectionTracingID, _ utils.Logger, _ protocol.Version, ) quicConn { @@ -1272,7 +1272,7 @@ var _ = Describe("Server", func() { _ *handshake.TokenGenerator, _ bool, _ *logging.ConnectionTracer, - _ uint64, + _ ConnectionTracingID, _ utils.Logger, _ protocol.Version, ) quicConn { @@ -1394,7 +1394,7 @@ var _ = Describe("Server", func() { _ *handshake.TokenGenerator, _ bool, _ *logging.ConnectionTracer, - _ uint64, + _ ConnectionTracingID, _ utils.Logger, _ protocol.Version, ) quicConn {