From c1795805990bbf8128299e4185d7582219c061e5 Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Tue, 13 Jul 2021 16:01:37 -0700 Subject: [PATCH] wgengine/magicsock: add debug envvar to force all traffic over DERP This would have been useful during debugging DERP issues recently. Signed-off-by: Josh Bleecher Snyder --- wgengine/magicsock/magicsock.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/wgengine/magicsock/magicsock.go b/wgengine/magicsock/magicsock.go index 2117f725c..a3b89759d 100644 --- a/wgengine/magicsock/magicsock.go +++ b/wgengine/magicsock/magicsock.go @@ -83,6 +83,8 @@ // on mobile devices, lowers the shutdown interval, and logs more // verbosely about idle measurements. debugReSTUNStopOnIdle, _ = strconv.ParseBool(os.Getenv("TS_DEBUG_RESTUN_STOP_ON_IDLE")) + // debugAlwaysDERP disables the use of UDP, forcing all peer communication over DERP. + debugAlwaysDERP, _ = strconv.ParseBool(os.Getenv("TS_DEBUG_ALWAYS_USE_DERP")) ) // useDerpRoute reports whether magicsock should enable the DERP @@ -2665,6 +2667,12 @@ func (c *Conn) bindSocket(rucPtr **RebindingUDPConn, network string, curPortFate ruc.mu.Lock() defer ruc.mu.Unlock() + if debugAlwaysDERP { + c.logf("disabled %v per TS_DEBUG_ALWAYS_USE_DERP", network) + ruc.pconn = newBlockForeverConn() + return nil + } + // Build a list of preferred ports. // Best is the port that the user requested. // Second best is the port that is currently in use.