net/netcheck: deflake (maybe) magicsock's TestNewConn

Updates #6207

Change-Id: I51d200d0b42b9a1ef799d0abfc8d4bd871c50cf2
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
pull/6216/head
Brad Fitzpatrick 2 years ago committed by Brad Fitzpatrick
parent db2cc393af
commit 036334e913

@ -19,6 +19,7 @@ import (
"net/netip" "net/netip"
"runtime" "runtime"
"sort" "sort"
"strings"
"sync" "sync"
"time" "time"
@ -1112,6 +1113,14 @@ func (c *Client) checkCaptivePortal(ctx context.Context, dm *tailcfg.DERPMap, pr
} }
node := dm.Regions[preferredDERP].Nodes[0] node := dm.Regions[preferredDERP].Nodes[0]
if strings.HasSuffix(node.HostName, tailcfg.DotInvalid) {
// Don't try to connect to invalid hostnames. This occurred in tests:
// https://github.com/tailscale/tailscale/issues/6207
// TODO(bradfitz,andrew-d): how to actually handle this nicely?
return false, nil
}
req, err := http.NewRequestWithContext(ctx, "GET", "http://"+node.HostName+"/generate_204", nil) req, err := http.NewRequestWithContext(ctx, "GET", "http://"+node.HostName+"/generate_204", nil)
if err != nil { if err != nil {
return false, err return false, err

@ -122,7 +122,7 @@ func DERPMapOf(stun ...string) *tailcfg.DERPMap {
node := &tailcfg.DERPNode{ node := &tailcfg.DERPNode{
Name: fmt.Sprint(regionID) + "a", Name: fmt.Sprint(regionID) + "a",
RegionID: regionID, RegionID: regionID,
HostName: fmt.Sprintf("d%d.invalid", regionID), HostName: fmt.Sprintf("d%d%s", regionID, tailcfg.DotInvalid),
IPv4: ipv4, IPv4: ipv4,
IPv6: ipv6, IPv6: ipv6,
STUNPort: port, STUNPort: port,

@ -144,3 +144,6 @@ type DERPNode struct {
// If empty, it's assumed to be the same as the DERP server. // If empty, it's assumed to be the same as the DERP server.
STUNTestIP string `json:",omitempty"` STUNTestIP string `json:",omitempty"`
} }
// DotInvalid is a fake DNS TLD used in tests for an invalid hostname.
const DotInvalid = ".invalid"

Loading…
Cancel
Save