mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Avoid comparisons to zero value of acceptQueue
PiperOrigin-RevId: 399765414
This commit is contained in:
committed by
gVisor bot
parent
36b36a8a73
commit
f4340b0c9f
@@ -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() {
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user