mirror of
https://github.com/tailscale/tailscale.git
synced 2025-02-19 19:38:40 +00:00
net/portmapper: fix t.Log-after-test-done race in tests
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
9f62cc665e
commit
cd426eaf4c
@ -14,6 +14,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"inet.af/netaddr"
|
"inet.af/netaddr"
|
||||||
|
"tailscale.com/syncs"
|
||||||
"tailscale.com/types/logger"
|
"tailscale.com/types/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -24,6 +25,7 @@ type TestIGD struct {
|
|||||||
pxpConn net.PacketConn // for NAT-PMP and/or PCP
|
pxpConn net.PacketConn // for NAT-PMP and/or PCP
|
||||||
ts *httptest.Server
|
ts *httptest.Server
|
||||||
logf logger.Logf
|
logf logger.Logf
|
||||||
|
closed syncs.AtomicBool
|
||||||
|
|
||||||
// do* will log which packets are sent, but will not reply to unexpected packets.
|
// do* will log which packets are sent, but will not reply to unexpected packets.
|
||||||
|
|
||||||
@ -97,6 +99,7 @@ func testIPAndGateway() (gw, ip netaddr.IP, ok bool) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (d *TestIGD) Close() error {
|
func (d *TestIGD) Close() error {
|
||||||
|
d.closed.Set(true)
|
||||||
d.ts.Close()
|
d.ts.Close()
|
||||||
d.upnpConn.Close()
|
d.upnpConn.Close()
|
||||||
d.pxpConn.Close()
|
d.pxpConn.Close()
|
||||||
@ -124,7 +127,9 @@ func (d *TestIGD) serveUPnPDiscovery() {
|
|||||||
for {
|
for {
|
||||||
n, src, err := d.upnpConn.ReadFrom(buf)
|
n, src, err := d.upnpConn.ReadFrom(buf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
d.logf("serveUPnP failed: %v", err)
|
if !d.closed.Get() {
|
||||||
|
d.logf("serveUPnP failed: %v", err)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
pkt := buf[:n]
|
pkt := buf[:n]
|
||||||
@ -149,7 +154,9 @@ func (d *TestIGD) servePxP() {
|
|||||||
for {
|
for {
|
||||||
n, a, err := d.pxpConn.ReadFrom(buf)
|
n, a, err := d.pxpConn.ReadFrom(buf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
d.logf("servePxP failed: %v", err)
|
if !d.closed.Get() {
|
||||||
|
d.logf("servePxP failed: %v", err)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ua := a.(*net.UDPAddr)
|
ua := a.(*net.UDPAddr)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user