diff --git a/cmd/syncthing/main.go b/cmd/syncthing/main.go index 31e4a915184..2ca318a8957 100644 --- a/cmd/syncthing/main.go +++ b/cmd/syncthing/main.go @@ -741,6 +741,11 @@ func syncthingMain(runtimeOptions RuntimeOptions) { curParts := strings.Split(Version, "-") if prevParts[0] != curParts[0] { if prevVersion != "" { + //Check Syncthing version is wheather downgrading + l.Infof("Current Syncthing %s, Loadind %s", prevVersion, Version) + if upgrade.CompareVersions(curParts[0], prevParts[0]) == upgrade.Older || upgrade.CompareVersions(curParts[0], prevParts[0]) == upgrade.MajorOlder { + l.Infof("Current Syncthing Version: %s, Loading Syncthing Version: %s: (Syncthing Version Mismatch)", prevVersion, Version) + } l.Infoln("Detected upgrade from", prevVersion, "to", Version) } @@ -965,6 +970,12 @@ func loadConfigAtStartup() *config.Wrapper { } if cfg.RawCopy().OriginalVersion != config.CurrentVersion { + //check config version + if cfg.RawCopy().OriginalVersion > config.CurrentVersion { + l.Fatalf("Current Configuration Version: %d, Loading Configuration Version: %d (Configuration Version Mismatch)", cfg.RawCopy().OriginalVersion, config.CurrentVersion) + //Config version is not compatible with installed version + os.Exit(exitError) + } err = archiveAndSaveConfig(cfg) if err != nil { l.Fatalln("Config archive:", err)