From 76f82cbd1fb015ffe25f689acae281cd644c6ae9 Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Wed, 14 May 2014 07:58:33 -0300 Subject: [PATCH] Make duplicate ID:s temporarily unique (fixes #153) --- cmd/syncthing/config.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/cmd/syncthing/config.go b/cmd/syncthing/config.go index 596f3f14..ab5cae28 100644 --- a/cmd/syncthing/config.go +++ b/cmd/syncthing/config.go @@ -2,6 +2,7 @@ package main import ( "encoding/xml" + "fmt" "io" "os" "reflect" @@ -178,6 +179,7 @@ func readConfigXML(rd io.Reader, myID string) (Configuration, error) { // Check for missing, bad or duplicate repository ID:s var seenRepos = map[string]*RepositoryConfiguration{} + var uniqueCounter int for i := range cfg.Repositories { repo := &cfg.Repositories[i] @@ -191,9 +193,16 @@ func readConfigXML(rd io.Reader, myID string) (Configuration, error) { } if seen, ok := seenRepos[repo.ID]; ok { - seen.Invalid = "duplicate repository ID" - repo.Invalid = "duplicate repository ID" warnf("Multiple repositories with ID %q; disabling", repo.ID) + + seen.Invalid = "duplicate repository ID" + if seen.ID == repo.ID { + uniqueCounter++ + seen.ID = fmt.Sprintf("%s~%d", repo.ID, uniqueCounter) + } + repo.Invalid = "duplicate repository ID" + uniqueCounter++ + repo.ID = fmt.Sprintf("%s~%d", repo.ID, uniqueCounter) } else { seenRepos[repo.ID] = repo }