From 09bb613c6679ba130e950214a178ded510741578 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Mon, 24 Feb 2025 13:57:22 +0100 Subject: [PATCH] trace dropping of unknown-version packets when Version Negotiation is off (#4971) --- server.go | 3 +++ server_test.go | 1 + 2 files changed, 4 insertions(+) diff --git a/server.go b/server.go index 2bb821ab7..092521b9c 100644 --- a/server.go +++ b/server.go @@ -426,6 +426,9 @@ func (s *baseServer) handlePacketImpl(p receivedPacket) bool /* is the buffer st // send a Version Negotiation Packet if the client is speaking a different protocol version if !protocol.IsSupportedVersion(s.config.Versions, v) { if s.disableVersionNegotiation { + if s.tracer != nil && s.tracer.DroppedPacket != nil { + s.tracer.DroppedPacket(p.remoteAddr, logging.PacketTypeNotDetermined, p.Size(), logging.PacketDropUnexpectedVersion) + } return false } diff --git a/server_test.go b/server_test.go index 64a16c518..5d3535d97 100644 --- a/server_test.go +++ b/server_test.go @@ -385,6 +385,7 @@ var _ = Describe("Server", func() { raddr := &net.UDPAddr{IP: net.IPv4(127, 0, 0, 1), Port: 1337} packet.remoteAddr = raddr done := make(chan struct{}) + tracer.EXPECT().DroppedPacket(raddr, logging.PacketTypeNotDetermined, packet.Size(), logging.PacketDropUnexpectedVersion) serv.handlePacket(packet) Consistently(done, 50*time.Millisecond).ShouldNot(BeClosed()) })