From ec790e58df296acd81cfe824e5869260b3acfa44 Mon Sep 17 00:00:00 2001 From: Andrew Dunham Date: Wed, 23 Nov 2022 09:35:24 -0500 Subject: [PATCH] net/dns: retry overwriting hosts file on Windows Updates #5753 Signed-off-by: Andrew Dunham Change-Id: I60f81bd3325d5ba5383b947c7a7aaa5b14e460f6 --- net/dns/manager_windows.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/net/dns/manager_windows.go b/net/dns/manager_windows.go index c3bf3b58c..f77c45fe0 100644 --- a/net/dns/manager_windows.go +++ b/net/dns/manager_windows.go @@ -167,7 +167,16 @@ func (m *windowsManager) setHosts(hosts []*HostEntry) error { return err } const fileMode = 0 // ignored on windows. - return atomicfile.WriteFile(hostsFile, outB, fileMode) + + // This can fail spuriously with an access denied error, so retry it a + // few times. + for i := 0; i < 5; i++ { + if err = atomicfile.WriteFile(hostsFile, outB, fileMode); err == nil { + return nil + } + time.Sleep(10 * time.Millisecond) + } + return err } // setPrimaryDNS sets the given resolvers and domains as the Tailscale