tailscale/ipn
Brad Fitzpatrick 91c9c33036 cmd/tailscaled: don't block ipnserver startup behind engine init on Windows
With this change, the ipnserver's safesocket.Listen (the localhost
tcp.Listen) happens right away, before any synchronous
TUN/DNS/Engine/etc setup work, which might be slow, especially on
early boot on Windows.

Because the safesocket.Listen starts up early, that means localhost
TCP dials (the safesocket.Connect from the GUI) complete successfully
and thus the GUI avoids the MessageBox error. (I verified that
pacifies it, even without a Listener.Accept; I'd feared that Windows
localhost was maybe special and avoided the normal listener backlog).

Once the GUI can then connect immediately without errors, the various
timeouts then matter less, because the backend is no longer trying to
race against the GUI's timeout. So keep retrying on errors for a
minute, or 10 minutes if the system just booted in the past 10
minutes.

This should fix the problem with Windows 10 desktops auto-logging in
and starting the Tailscale frontend which was then showing a
MessageBox error about failing to connect to tailscaled, which was
slow coming up because the Windows networking stack wasn't up
yet. Fingers crossed.

Fixes #1313 (previously #1187, etc)

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-04-20 22:26:27 -07:00
..
ipnlocal ipn/ipnlocal: add arpa suffixes to MagicDNS for reverse lookups. 2021-04-20 18:05:17 -07:00
ipnserver cmd/tailscaled: don't block ipnserver startup behind engine init on Windows 2021-04-20 22:26:27 -07:00
ipnstate ipn/ipnlocal, etc: require file sharing capability to send/recv files 2021-04-16 10:58:19 -07:00
localapi ipn/ipnlocal, etc: require file sharing capability to send/recv files 2021-04-16 10:58:19 -07:00
policy ipn/policy: mark peerapi4 and peerapi6 as interesting services 2021-04-01 11:57:24 -07:00
backend.go ipn{,/ipnlocal}: in direct file receive mode, don't rename partial file 2021-04-20 12:40:42 -07:00
doc.go Move Linux client & common packages into a public repo. 2020-02-09 09:32:57 -08:00
fake_test.go ipn{,/ipnlocal}, cmd/tailscale/cli: don't check pref reverts on initial up 2021-04-18 08:12:18 -07:00
handle.go ipn{,/ipnlocal}, cmd/tailscale/cli: don't check pref reverts on initial up 2021-04-18 08:12:18 -07:00
message_test.go ipn: move Options.Notify to its own method 2021-04-06 22:12:40 -07:00
message.go ipn: don't Logout when Windows GUI disconnects 2021-04-20 13:14:10 -07:00
prefs_clone.go ipn, cmd/tailscale/cli: add pref to configure sudo-free operator user 2021-04-19 10:12:41 -07:00
prefs_test.go ipn, cmd/tailscale/cli: add pref to configure sudo-free operator user 2021-04-19 10:12:41 -07:00
prefs.go ipn, cmd/tailscale/cli: add pref to configure sudo-free operator user 2021-04-19 10:12:41 -07:00
store_test.go Add tstest.PanicOnLog(), and fix various problems detected by this. 2020-05-13 23:12:35 -04:00
store.go wgkey: new package 2020-12-30 17:33:02 -08:00