From 741bf52370b8eaf5ba5a948169e70176133fa23d Mon Sep 17 00:00:00 2001 From: ignoramous Date: Fri, 4 Oct 2024 06:14:17 +0530 Subject: [PATCH] tcpip/udp: document preconditions for endpoint.closeLocked() --- pkg/tcpip/transport/udp/endpoint.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkg/tcpip/transport/udp/endpoint.go b/pkg/tcpip/transport/udp/endpoint.go index 785ea47b2..7e78782f2 100644 --- a/pkg/tcpip/transport/udp/endpoint.go +++ b/pkg/tcpip/transport/udp/endpoint.go @@ -160,11 +160,16 @@ func (e *endpoint) Abort() { // associated with it. func (e *endpoint) Close() { e.mu.Lock() + e.closeLocked() + e.mu.Unlock() +} +// Preconditions: e.mu is locked. +// +checklocks:e.mu +func (e *endpoint) closeLocked() { switch state := e.net.State(); state { case transport.DatagramEndpointStateInitial: case transport.DatagramEndpointStateClosed: - e.mu.Unlock() return case transport.DatagramEndpointStateBound, transport.DatagramEndpointStateConnected: id := e.net.Info().ID @@ -201,7 +206,6 @@ func (e *endpoint) Close() { e.net.Shutdown() e.net.Close() e.readShutdown = true - e.mu.Unlock() e.waiterQueue.Notify(waiter.EventHUp | waiter.EventErr | waiter.ReadableEvents | waiter.WritableEvents) }