From b3fb3bf084935926b5cb6ee9182129f9e6704429 Mon Sep 17 00:00:00 2001 From: Andrew Lytvynov Date: Fri, 19 Apr 2024 12:04:11 -0700 Subject: [PATCH] clientupdate: return OS-specific version from LatestTailscaleVersion (#11812) We don't always have the same latest version for all platforms (like with 1.64.2 is only Synology+Windows), so we should use the OS-specific result from pkgs JSON response instead of the main Version field. Updates #11795 Signed-off-by: Andrew Lytvynov --- clientupdate/clientupdate.go | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/clientupdate/clientupdate.go b/clientupdate/clientupdate.go index 3a24110b9..2bfb0f294 100644 --- a/clientupdate/clientupdate.go +++ b/clientupdate/clientupdate.go @@ -1295,10 +1295,23 @@ func LatestTailscaleVersion(track string) (string, error) { if err != nil { return "", err } - if latest.Version == "" { - return "", fmt.Errorf("no latest version found for %q track", track) + ver := latest.Version + switch runtime.GOOS { + case "windows": + ver = latest.MSIsVersion + case "darwin": + ver = latest.MacZipsVersion + case "linux": + ver = latest.TarballsVersion + if distro.Get() == distro.Synology { + ver = latest.SPKsVersion + } } - return latest.Version, nil + + if ver == "" { + return "", fmt.Errorf("no latest version found for OS %q on %q track", runtime.GOOS, track) + } + return ver, nil } type trackPackages struct {