net/netcheck: deflake (maybe) magicsock's TestNewConn
Updates #6207 Change-Id: I51d200d0b42b9a1ef799d0abfc8d4bd871c50cf2 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>pull/6216/head
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…
Reference in New Issue