Ver Fonte

net/netns: don't bind to device for localhost connections

Fixes derphttp test failures on Windows (for #50).
Brad Fitzpatrick há 5 anos atrás
pai
commit
551e1e99e9
1 ficheiros alterados com 8 adições e 0 exclusões
  1. 8 0
      net/netns/netns_windows.go

+ 8 - 0
net/netns/netns_windows.go

@@ -6,6 +6,7 @@ package netns
 
 import (
 	"encoding/binary"
+	"strings"
 	"syscall"
 	"unsafe"
 
@@ -28,6 +29,13 @@ func interfaceIndex(iface *winipcfg.IPAdapterAddresses) uint32 {
 // control binds c to the Windows interface that holds a default
 // route, and is not the Tailscale WinTun interface.
 func control(network, address string, c syscall.RawConn) error {
+	if strings.HasPrefix(address, "127.") {
+		// Don't bind to an interface for localhost connections,
+		// otherwise we get:
+		//   connectex: The requested address is not valid in its context
+		// (The derphttp tests were failing)
+		return nil
+	}
 	canV4, canV6 := false, false
 	switch network {
 	case "tcp", "udp":