Avoid comparisons to zero value of acceptQueue

PiperOrigin-RevId: 399765414
This commit is contained in:
Tamir Duberstein
2021-09-29 13:45:47 -07:00
committed by gVisor bot
parent 36b36a8a73
commit f4340b0c9f
2 changed files with 13 additions and 21 deletions
+2 -4
View File
@@ -525,10 +525,8 @@ func (e *endpoint) handleListenSegment(ctx *listenContext, s *segment) tcpip.Err
e.acceptMu.Lock()
defer e.acceptMu.Unlock()
for {
if e.acceptQueue == (acceptQueue{}) {
// If the listener has transitioned out of the listen state
// (accepted is the zero value), the new endpoint is reset
// instead.
// The listener is transitioning out of the Listen state; bail.
if e.acceptQueue.capacity == 0 {
return false
}
if e.acceptQueue.isFull() {
+11 -17
View File
@@ -1085,10 +1085,6 @@ func (e *endpoint) closePendingAcceptableConnectionsLocked() {
e.acceptQueue = acceptQueue{}
e.acceptMu.Unlock()
if acceptedCopy == (acceptQueue{}) {
return
}
e.acceptCond.Broadcast()
// Reset all connections that are waiting to be accepted.
@@ -2486,21 +2482,19 @@ func (e *endpoint) listen(backlog int) tcpip.Error {
if e.EndpointState() == StateListen && !e.closed {
e.acceptMu.Lock()
defer e.acceptMu.Unlock()
if e.acceptQueue == (acceptQueue{}) {
// listen is called after shutdown.
e.shutdownFlags = 0
e.rcvQueueInfo.rcvQueueMu.Lock()
e.rcvQueueInfo.RcvClosed = false
e.rcvQueueInfo.rcvQueueMu.Unlock()
} else {
// Adjust the size of the backlog iff we can fit
// existing pending connections into the new one.
if e.acceptQueue.endpoints.Len() > backlog {
return &tcpip.ErrInvalidEndpointState{}
}
// Adjust the size of the backlog iff we can fit
// existing pending connections into the new one.
if e.acceptQueue.endpoints.Len() > backlog {
return &tcpip.ErrInvalidEndpointState{}
}
e.acceptQueue.capacity = backlog
e.shutdownFlags = 0
e.rcvQueueInfo.rcvQueueMu.Lock()
e.rcvQueueInfo.RcvClosed = false
e.rcvQueueInfo.rcvQueueMu.Unlock()
// Notify any blocked goroutines that they can attempt to
// deliver endpoints again.
e.acceptCond.Broadcast()
@@ -2535,7 +2529,7 @@ func (e *endpoint) listen(backlog int) tcpip.Error {
// may be pre-populated with some previously accepted (but not Accepted)
// endpoints.
e.acceptMu.Lock()
if e.acceptQueue == (acceptQueue{}) {
if e.acceptQueue.capacity == 0 {
e.acceptQueue.capacity = backlog
}
e.acceptMu.Unlock()