diff options
| author | Dmytro Shynkevych <dmytro@tailscale.com> | 2020-07-29 21:09:18 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-07-29 21:09:18 -0400 |
| commit | 2ce2b632396801600b057859ae26c4b508f10e57 (patch) | |
| tree | a997cf967bb205f465874d106abd0f2561aa571a | |
| parent | 154d1cde058063a2e9abb8fee91514064ffc0364 (diff) | |
| download | tailscale-1.0.0.tar.xz tailscale-1.0.0.zip | |
router: stop iOS subprocess sandbox violations (#617)v1.0.0
Signed-off-by: Dmytro Shynkevych <dmytro@tailscale.com>
| -rw-r--r-- | wgengine/router/router_userspace_bsd.go | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/wgengine/router/router_userspace_bsd.go b/wgengine/router/router_userspace_bsd.go index 5a8655f12..7c2aa1b88 100644 --- a/wgengine/router/router_userspace_bsd.go +++ b/wgengine/router/router_userspace_bsd.go @@ -153,7 +153,10 @@ func (r *userspaceBSDRouter) Set(cfg *Config) error { } func (r *userspaceBSDRouter) Close() error { - cleanup(r.logf, r.tunname) + if err := downDNS(r.tunname); err != nil { + r.logf("dns down: %v", err) + } + // No interface cleanup is necessary during normal shutdown. return nil } @@ -161,9 +164,12 @@ func cleanup(logf logger.Logf, interfaceName string) { if err := downDNS(interfaceName); err != nil { logf("dns down: %v", err) } - - ifup := []string{"ifconfig", interfaceName, "down"} + // If the interface was left behind, ifconfig down will not remove it. + // In fact, this will leave a system in a tainted state where starting tailscaled + // will result in "interface tailscale0 already exists" + // until the defunct interface is ifconfig-destroyed. + ifup := []string{"ifconfig", interfaceName, "destroy"} if out, err := cmd(ifup...).CombinedOutput(); err != nil { - logf("ifconfig down: %v\n%s", err, out) + logf("ifconfig destroy: %v\n%s", err, out) } } |
