derp: remove OnlyDisco option.

Active discovery lets us introspect the state of the network stack precisely
enough that it's unnecessary, and dropping the initial DERP packets greatly
slows down tests. Additionally, it's unrealistic since our production network
will never deliver _only_ discovery packets, it'll be all or nothing.

Signed-off-by: David Anderson <danderson@tailscale.com>
reviewable/pr609/r1
David Anderson 4 years ago committed by Dave Anderson
parent 5455c64f1d
commit c3994fd77c

@ -26,7 +26,6 @@ import (
"golang.org/x/crypto/nacl/box" "golang.org/x/crypto/nacl/box"
"golang.org/x/sync/errgroup" "golang.org/x/sync/errgroup"
"tailscale.com/disco"
"tailscale.com/metrics" "tailscale.com/metrics"
"tailscale.com/types/key" "tailscale.com/types/key"
"tailscale.com/types/logger" "tailscale.com/types/logger"
@ -52,13 +51,6 @@ type Server struct {
// before failing when writing to a client. // before failing when writing to a client.
WriteTimeout time.Duration WriteTimeout time.Duration
// OnlyDisco controls whether, for tests, non-discovery packets
// are dropped. This is used by magicsock tests to verify that
// NAT traversal works (using DERP for out-of-band messaging)
// but the packets themselves aren't going via DERP.
OnlyDisco bool
_ [pad32bit]byte
privateKey key.Private privateKey key.Private
publicKey key.Public publicKey key.Public
logf logger.Logf logf logger.Logf
@ -559,11 +551,6 @@ func (c *sclient) handleFrameSendPacket(ft frameType, fl uint32) error {
return fmt.Errorf("client %x: recvPacket: %v", c.key, err) return fmt.Errorf("client %x: recvPacket: %v", c.key, err)
} }
if s.OnlyDisco && !disco.LooksLikeDiscoWrapper(contents) {
s.packetsDropped.Add(1)
return nil
}
var fwd PacketForwarder var fwd PacketForwarder
s.mu.Lock() s.mu.Lock()
dst := s.clients[dstKey] dst := s.clients[dstKey]

@ -69,11 +69,6 @@ func runDERPAndStun(t *testing.T, logf logger.Logf, l nettype.PacketListener, st
t.Fatal(err) t.Fatal(err)
} }
d := derp.NewServer(serverPrivateKey, logf) d := derp.NewServer(serverPrivateKey, logf)
if l != (nettype.Std{}) {
// When using virtual networking, only allow DERP to forward
// discovery traffic, not actual packets.
d.OnlyDisco = false
}
httpsrv := httptest.NewUnstartedServer(derphttp.Handler(d)) httpsrv := httptest.NewUnstartedServer(derphttp.Handler(d))
httpsrv.Config.ErrorLog = logger.StdLogger(logf) httpsrv.Config.ErrorLog = logger.StdLogger(logf)

Loading…
Cancel
Save