diff --git a/client/snowflake.go b/client/snowflake.go index 648481f..fb6bbb7 100644 --- a/client/snowflake.go +++ b/client/snowflake.go @@ -271,7 +271,11 @@ func main() { switch methodName { case "snowflake": // TODO: Be able to recover when SOCKS dies. - ln, err := pt.ListenSocks("tcp", "127.0.0.1:0") + listenAddr := "127.0.0.1:0" + if forcedListenAddr := os.Getenv("SNOWFLAKE_TEST_FORCELISTENADDR"); forcedListenAddr != "" { + listenAddr = forcedListenAddr + } + ln, err := pt.ListenSocks("tcp", listenAddr) if err != nil { pt.CmethodError(methodName, err.Error()) break diff --git a/proxy/lib/snowflake.go b/proxy/lib/snowflake.go index c6c667b..114f517 100644 --- a/proxy/lib/snowflake.go +++ b/proxy/lib/snowflake.go @@ -35,6 +35,7 @@ import ( "net" "net/http" "net/url" + "os" "strings" "sync" "time" @@ -849,6 +850,11 @@ func (sf *SnowflakeProxy) Stop() { func (sf *SnowflakeProxy) checkNATType(config webrtc.Configuration, probeURL string) error { log.Printf("Checking our NAT type, contacting NAT check probe server at \"%v\"...", probeURL) + if os.Getenv("SNOWFLAKE_TEST_ASSUMEUNRESTRICTED") != "" { + currentNATType = NATUnrestricted + return nil + } + probe, err := newSignalingServer(probeURL) if err != nil { return fmt.Errorf("Error parsing url: %w", err)