ipn/ipnlocal: make sure mobile clients don't use the old control server URL

The new frontends are better for battery.

Updates #2442
Updates tailscale/corp#2750

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
pull/2989/head
Brad Fitzpatrick 3 years ago committed by Brad Fitzpatrick
parent babd163aac
commit 6d43cbc325

@ -1419,6 +1419,26 @@ func (b *LocalBackend) loadStateLocked(key ipn.StateKey, prefs *ipn.Prefs) (err
if err != nil { if err != nil {
return fmt.Errorf("PrefsFromBytes: %v", err) return fmt.Errorf("PrefsFromBytes: %v", err)
} }
// On mobile platforms, ignore any old stored preferences for
// https://login.tailscale.com as the control server that
// would override the new default of controlplane.tailscale.com.
// This makes sure that mobile clients go through the new
// frontends where we're (2021-10-02) doing battery
// optimization work ahead of turning down the old backends.
// TODO(bradfitz): make this the default for all platforms
// later. But mobile is a relatively small chunk (compared to
// Linux, Windows, macOS) and moving mobile early for battery
// gains is nice.
switch runtime.GOOS {
case "android", "ios":
if b.prefs != nil && b.prefs.ControlURL != "" &&
b.prefs.ControlURL != ipn.DefaultControlURL &&
ipn.IsLoginServerSynonym(b.prefs.ControlURL) {
b.prefs.ControlURL = ""
}
}
b.logf("backend prefs for %q: %s", key, b.prefs.Pretty()) b.logf("backend prefs for %q: %s", key, b.prefs.Pretty())
return nil return nil
} }

Loading…
Cancel
Save