From 848a2bddf09c3c7ff22076652d344abc950d46f0 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Thu, 5 Mar 2020 07:58:16 -0800 Subject: [PATCH] wgengine/magicsock: update set of DERP nodes --- wgengine/magicsock/derpmap.go | 16 ++++++++++------ wgengine/magicsock/magicsock.go | 3 +++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/wgengine/magicsock/derpmap.go b/wgengine/magicsock/derpmap.go index 574a84591..22687eb31 100644 --- a/wgengine/magicsock/derpmap.go +++ b/wgengine/magicsock/derpmap.go @@ -25,13 +25,17 @@ var ( ) const ( - derpNYC = 1 - derpSF = 2 + derpUSNY = 1 + derpUSSF = 2 + derpSG = 3 + derpDE = 4 ) func init() { - addDerper(derpNYC, "derp.tailscale.com") - addDerper(derpSF, "derp2.tailscale.com") + addDerper(derpUSNY, "derp1.tailscale.com") + addDerper(derpUSSF, "derp2.tailscale.com") + addDerper(derpSG, "derp3.tailscale.com") + addDerper(derpDE, "derp4.tailscale.com") } func addDerper(i int, host string) { @@ -47,7 +51,7 @@ func addDerper(i int, host string) { } // derpHost returns the hostname of a DERP server index (a fake port -// number used with derpMagicIP). It always returns a non-empty string. +// number used with derpMagicIP). func derpHost(i int) string { if h, ok := derpHostOfIndex[i]; ok { return h @@ -55,5 +59,5 @@ func derpHost(i int) string { if 1 <= i && i <= 64<<10 { return fmt.Sprintf("derp%v.tailscale.com", i) } - return "derp.tailscale.com" + return "" } diff --git a/wgengine/magicsock/magicsock.go b/wgengine/magicsock/magicsock.go index ee7c0bb9b..ad690ea8d 100644 --- a/wgengine/magicsock/magicsock.go +++ b/wgengine/magicsock/magicsock.go @@ -626,6 +626,9 @@ func (c *Conn) derpWriteChanOfAddr(addr *net.UDPAddr) chan<- derpWriteRequest { c.derpCancel = make(map[int]context.CancelFunc) } host := derpHost(addr.Port) + if host == "" { + return nil + } dc, err := derphttp.NewClient(c.privateKey, "https://"+host+"/derp", log.Printf) if err != nil { c.logf("derphttp.NewClient: port %d, host %q invalid? err: %v", addr.Port, host, err)