Merge pull request #10990 from ignoramous:patch-5

PiperOrigin-RevId: 683708561
This commit is contained in:
gVisor bot
2024-10-08 11:49:08 -07:00
2 changed files with 9 additions and 3 deletions
+6 -2
View File
@@ -160,11 +160,16 @@ func (e *endpoint) Abort() {
// associated with it.
func (e *endpoint) Close() {
e.mu.Lock()
defer e.mu.Unlock()
e.closeLocked()
}
// 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)
}
+3 -1
View File
@@ -76,15 +76,17 @@ func (r *ForwarderRequest) CreateEndpoint(queue *waiter.Queue) (tcpip.Endpoint,
netHdr := r.pkt.Network()
if err := ep.net.Bind(tcpip.FullAddress{NIC: r.pkt.NICID, Addr: netHdr.DestinationAddress(), Port: r.id.LocalPort}); err != nil {
ep.closeLocked()
return nil, err
}
if err := ep.net.Connect(tcpip.FullAddress{NIC: r.pkt.NICID, Addr: netHdr.SourceAddress(), Port: r.id.RemotePort}); err != nil {
ep.closeLocked()
return nil, err
}
if err := r.stack.RegisterTransportEndpoint([]tcpip.NetworkProtocolNumber{r.pkt.NetworkProtocolNumber}, ProtocolNumber, r.id, ep, ep.portFlags, tcpip.NICID(ep.ops.GetBindToDevice())); err != nil {
ep.Close()
ep.closeLocked()
return nil, err
}