mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-29 13:05:46 +00:00
net/portmapper: fix "running a test" condition.
Fixes #2686. Signed-off-by: David Anderson <danderson@tailscale.com>
This commit is contained in:
parent
1925fb584e
commit
b49d9bc74d
@ -236,7 +236,19 @@ func (c *Client) upnpPort() uint16 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) listenPacket(ctx context.Context, network, addr string) (net.PacketConn, error) {
|
func (c *Client) listenPacket(ctx context.Context, network, addr string) (net.PacketConn, error) {
|
||||||
if (c.testPxPPort != 0 || c.testUPnPPort != 0) && os.Getenv("GITHUB_ACTIONS") == "true" {
|
// When running under testing conditions, we bind the IGD server
|
||||||
|
// to localhost, and may be running in an environment where our
|
||||||
|
// netns code would decide that binding the portmapper client
|
||||||
|
// socket to the default route interface is the correct way to
|
||||||
|
// ensure connectivity. This can result in us trying to send
|
||||||
|
// packets for 127.0.0.1 out the machine's LAN interface, which
|
||||||
|
// obviously gets dropped on the floor.
|
||||||
|
//
|
||||||
|
// So, under those testing conditions, do _not_ use netns to
|
||||||
|
// create listening sockets. Such sockets are vulnerable to
|
||||||
|
// routing loops, but it's tests that don't set up routing loops,
|
||||||
|
// so we don't care.
|
||||||
|
if c.testPxPPort != 0 || c.testUPnPPort != 0 || os.Getenv("GITHUB_ACTIONS") == "true" {
|
||||||
var lc net.ListenConfig
|
var lc net.ListenConfig
|
||||||
return lc.ListenPacket(ctx, network, addr)
|
return lc.ListenPacket(ctx, network, addr)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user