mirror of
https://github.com/tailscale/tailscale.git
synced 2025-02-21 04:18:38 +00:00
control/controlclient: cache Windows version
To atone for 1d7f9d5b4a59b3e, the revert of 4224b3f73110f6f. At least it's fast again, even if it's shelling out to cmd.exe (once now). Updates #1478 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
1d7f9d5b4a
commit
6fbc9b3a98
@ -7,6 +7,7 @@ package controlclient
|
|||||||
import (
|
import (
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync/atomic"
|
||||||
"syscall"
|
"syscall"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -14,7 +15,12 @@ func init() {
|
|||||||
osVersion = osVersionWindows
|
osVersion = osVersionWindows
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var winVerCache atomic.Value // of string
|
||||||
|
|
||||||
func osVersionWindows() string {
|
func osVersionWindows() string {
|
||||||
|
if s, ok := winVerCache.Load().(string); ok {
|
||||||
|
return s
|
||||||
|
}
|
||||||
cmd := exec.Command("cmd", "/c", "ver")
|
cmd := exec.Command("cmd", "/c", "ver")
|
||||||
cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
|
cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
|
||||||
out, _ := cmd.Output() // "\nMicrosoft Windows [Version 10.0.19041.388]\n\n"
|
out, _ := cmd.Output() // "\nMicrosoft Windows [Version 10.0.19041.388]\n\n"
|
||||||
@ -26,5 +32,8 @@ func osVersionWindows() string {
|
|||||||
if sp := strings.Index(s, " "); sp != -1 {
|
if sp := strings.Index(s, " "); sp != -1 {
|
||||||
s = s[sp+1:]
|
s = s[sp+1:]
|
||||||
}
|
}
|
||||||
|
if s != "" {
|
||||||
|
winVerCache.Store(s)
|
||||||
|
}
|
||||||
return s // "10.0.19041.388", ideally
|
return s // "10.0.19041.388", ideally
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user