wgengine/tsdns: replace connections when net link changes (macOS)

When the network link changes, existing UDP sockets fail immediately
and permanently on macOS.

The forwarder set up a single UDP conn and never changed it.
As a result, any time there was a network link change,
all forwarded DNS queries failed.

To fix this, create a new connection when send requests
fail because of network unreachability.

This change is darwin-only, although extended it to other platforms
should be straightforward.

Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
This commit is contained in:
Josh Bleecher Snyder
2020-09-23 13:21:52 -07:00
committed by Josh Bleecher Snyder
parent 1fd10061fd
commit 6e8328cba5
4 changed files with 247 additions and 34 deletions

View File

@ -0,0 +1,10 @@
// Copyright (c) 2020 Tailscale Inc & AUTHORS All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build !darwin
package tsdns
func networkIsDown(err error) bool { return false }
func networkIsUnreachable(err error) bool { return false }