mirror of
https://github.com/tailscale/tailscale.git
synced 2024-12-04 15:35:38 +00:00
wgengine/magicsock: fix data race with sync.Pool in error+logging path
Fixes #3122
Change-Id: Ib52e84f9bd5813d6cf2e80ce5b2296912a48e064
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
(cherry picked from commit c759fcc7d3
)
This commit is contained in:
parent
ac4cda9303
commit
430d378f7d
@ -1149,8 +1149,12 @@ func (c *Conn) Send(b []byte, ep conn.Endpoint) error {
|
|||||||
// See sendAddr's docs on the return value meanings.
|
// See sendAddr's docs on the return value meanings.
|
||||||
func (c *Conn) sendUDP(ipp netaddr.IPPort, b []byte) (sent bool, err error) {
|
func (c *Conn) sendUDP(ipp netaddr.IPPort, b []byte) (sent bool, err error) {
|
||||||
ua := udpAddrPool.Get().(*net.UDPAddr)
|
ua := udpAddrPool.Get().(*net.UDPAddr)
|
||||||
defer udpAddrPool.Put(ua)
|
sent, err = c.sendUDPStd(ipp.UDPAddrAt(ua), b)
|
||||||
return c.sendUDPStd(ipp.UDPAddrAt(ua), b)
|
if err == nil {
|
||||||
|
// Only return it to the pool on success; Issue 3122.
|
||||||
|
udpAddrPool.Put(ua)
|
||||||
|
}
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// sendUDP sends UDP packet b to addr.
|
// sendUDP sends UDP packet b to addr.
|
||||||
|
Loading…
Reference in New Issue
Block a user