tcpip/udp: avoid deadlock in forwader.CreateEndpoint

This commit is contained in:
ignoramous
2024-10-04 06:04:38 +05:30
committed by GitHub
parent cb418b7f09
commit 123173f839
+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
}