diff --git a/lib/config/config_test.go b/lib/config/config_test.go index a1e682a9..7edd6519 100644 --- a/lib/config/config_test.go +++ b/lib/config/config_test.go @@ -61,6 +61,7 @@ func TestDefaultValues(t *testing.T) { URPostInsecurely: false, ReleasesURL: "https://api.github.com/repos/syncthing/syncthing/releases?per_page=30", AlwaysLocalNets: []string{}, + OverwriteNames: false, } cfg := New(device1) @@ -190,6 +191,7 @@ func TestOverriddenValues(t *testing.T) { URPostInsecurely: true, ReleasesURL: "https://localhost/releases", AlwaysLocalNets: []string{}, + OverwriteNames: true, } cfg, err := Load("testdata/overridenvalues.xml", device1) diff --git a/lib/config/optionsconfiguration.go b/lib/config/optionsconfiguration.go index 1bcf56a0..783b43a3 100644 --- a/lib/config/optionsconfiguration.go +++ b/lib/config/optionsconfiguration.go @@ -39,6 +39,7 @@ type OptionsConfiguration struct { MinHomeDiskFreePct float64 `xml:"minHomeDiskFreePct" json:"minHomeDiskFreePct" default:"1"` ReleasesURL string `xml:"releasesURL" json:"releasesURL" default:"https://api.github.com/repos/syncthing/syncthing/releases?per_page=30"` AlwaysLocalNets []string `xml:"alwaysLocalNet" json:"alwaysLocalNets"` + OverwriteNames bool `xml:"overwriteNames" json:"overwriteNames" default:"false"` } func (orig OptionsConfiguration) Copy() OptionsConfiguration { diff --git a/lib/config/testdata/overridenvalues.xml b/lib/config/testdata/overridenvalues.xml index 4dc2efba..ee8a83eb 100755 --- a/lib/config/testdata/overridenvalues.xml +++ b/lib/config/testdata/overridenvalues.xml @@ -34,5 +34,6 @@ 800 true https://localhost/releases + true diff --git a/lib/model/model.go b/lib/model/model.go index 21f1503a..518bde61 100644 --- a/lib/model/model.go +++ b/lib/model/model.go @@ -1007,7 +1007,7 @@ func (m *Model) AddConnection(conn Connection, hello protocol.HelloMessage) { l.Infof(`Device %s client is "%s %s" named "%s"`, deviceID, hello.ClientName, hello.ClientVersion, hello.DeviceName) device, ok := m.cfg.Devices()[deviceID] - if ok && device.Name == "" { + if ok && (device.Name == "" || m.cfg.Options().OverwriteNames) { device.Name = hello.DeviceName m.cfg.SetDevice(device) m.cfg.Save() diff --git a/lib/model/model_test.go b/lib/model/model_test.go index 4da2aa8d..b003833a 100644 --- a/lib/model/model_test.go +++ b/lib/model/model_test.go @@ -357,6 +357,19 @@ func TestDeviceRename(t *testing.T) { if cfgw.Devices()[device1].Name != "tester" { t.Errorf("Device name not saved in config") } + + m.Close(device1, protocol.ErrTimeout) + + opts := cfg.Options() + opts.OverwriteNames = true + cfg.SetOptions(opts) + + hello.DeviceName = "tester2" + m.AddConnection(conn, hello) + + if cfg.Devices()[device1].Name != "tester2" { + t.Errorf("Device name not overwritten") + } } func TestClusterConfig(t *testing.T) {