diff options
author | gVisor bot <gvisor-bot@google.com> | 2020-09-28 23:48:01 +0000 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2020-09-28 23:48:01 +0000 |
commit | 651b81cca8a2542c0b0f2de1e8af7c66511c24c6 (patch) | |
tree | ba944cee24e78f4be9d8541c4310cd10e5fa3d2b /pkg/tcpip/transport/tcp | |
parent | 3f622b94b7f38863c0706bb6fd49c7b4f61e45cd (diff) | |
parent | ba44298a390c69dcf33ae591b9ddc6b3514cc9b3 (diff) |
Merge release-20200921.0-58-gba44298a3 (automated)
Diffstat (limited to 'pkg/tcpip/transport/tcp')
-rw-r--r-- | pkg/tcpip/transport/tcp/endpoint.go | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/pkg/tcpip/transport/tcp/endpoint.go b/pkg/tcpip/transport/tcp/endpoint.go index 87db13720..7ad894840 100644 --- a/pkg/tcpip/transport/tcp/endpoint.go +++ b/pkg/tcpip/transport/tcp/endpoint.go @@ -927,7 +927,12 @@ func (e *endpoint) Readiness(mask waiter.EventMask) waiter.EventMask { result := waiter.EventMask(0) switch e.EndpointState() { - case StateInitial, StateBound, StateConnecting, StateSynSent, StateSynRecv: + case StateInitial, StateBound: + // This prevents blocking of new sockets which are not + // connected when SO_LINGER is set. + result |= waiter.EventHUp + + case StateConnecting, StateSynSent, StateSynRecv: // Ready for nothing. case StateClose, StateError, StateTimeWait: @@ -1098,6 +1103,8 @@ func (e *endpoint) closeNoShutdownLocked() { e.notifyProtocolGoroutine(notifyClose) } else { e.transitionToStateCloseLocked() + // Notify that the endpoint is closed. + e.waiterQueue.Notify(waiter.EventHUp) } } |