From afd655a5d8b9d9bc747ee99b1ec2475cc526c996 Mon Sep 17 00:00:00 2001 From: Ian Gudger Date: Mon, 9 Jul 2018 21:19:58 -0700 Subject: Notify UDP and Ping endpoints on close PiperOrigin-RevId: 203883138 Change-Id: I7500c0a70f5d71c3fb37e2477f7fc466fa92fd3e --- pkg/tcpip/transport/ping/endpoint.go | 5 ++++- pkg/tcpip/transport/udp/endpoint.go | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'pkg') diff --git a/pkg/tcpip/transport/ping/endpoint.go b/pkg/tcpip/transport/ping/endpoint.go index 78e540727..f15e44b61 100644 --- a/pkg/tcpip/transport/ping/endpoint.go +++ b/pkg/tcpip/transport/ping/endpoint.go @@ -92,7 +92,6 @@ func newEndpoint(stack *stack.Stack, netProto tcpip.NetworkProtocolNumber, waite // associated with it. func (e *endpoint) Close() { e.mu.Lock() - defer e.mu.Unlock() switch e.state { case stateBound, stateConnected: @@ -113,6 +112,10 @@ func (e *endpoint) Close() { // Update the state. e.state = stateClosed + + e.mu.Unlock() + + e.waiterQueue.Notify(waiter.EventHUp | waiter.EventErr | waiter.EventIn | waiter.EventOut) } // Read reads data from the endpoint. This method does not block if diff --git a/pkg/tcpip/transport/udp/endpoint.go b/pkg/tcpip/transport/udp/endpoint.go index eb2f26189..2a32c3a87 100644 --- a/pkg/tcpip/transport/udp/endpoint.go +++ b/pkg/tcpip/transport/udp/endpoint.go @@ -121,7 +121,6 @@ func NewConnectedEndpoint(stack *stack.Stack, r *stack.Route, id stack.Transport // associated with it. func (e *endpoint) Close() { e.mu.Lock() - defer e.mu.Unlock() switch e.state { case stateBound, stateConnected: @@ -142,6 +141,10 @@ func (e *endpoint) Close() { // Update the state. e.state = stateClosed + + e.mu.Unlock() + + e.waiterQueue.Notify(waiter.EventHUp | waiter.EventErr | waiter.EventIn | waiter.EventOut) } // Read reads data from the endpoint. This method does not block if -- cgit v1.2.3