diff --git a/lib/config/config.go b/lib/config/config.go index b7a1439f..a8e48f4a 100644 --- a/lib/config/config.go +++ b/lib/config/config.go @@ -56,6 +56,34 @@ var ( } ) +func New(myID protocol.DeviceID) Configuration { + var cfg Configuration + cfg.Version = CurrentVersion + cfg.OriginalVersion = CurrentVersion + + setDefaults(&cfg) + setDefaults(&cfg.Options) + setDefaults(&cfg.GUI) + + cfg.prepare(myID) + + return cfg +} + +func ReadXML(r io.Reader, myID protocol.DeviceID) (Configuration, error) { + var cfg Configuration + + setDefaults(&cfg) + setDefaults(&cfg.Options) + setDefaults(&cfg.GUI) + + err := xml.NewDecoder(r).Decode(&cfg) + cfg.OriginalVersion = cfg.Version + + cfg.prepare(myID) + return cfg, err +} + type Configuration struct { Version int `xml:"version,attr" json:"version"` Folders []FolderConfiguration `xml:"folder" json:"folders"` @@ -92,34 +120,6 @@ func (cfg Configuration) Copy() Configuration { return newCfg } -func New(myID protocol.DeviceID) Configuration { - var cfg Configuration - cfg.Version = CurrentVersion - cfg.OriginalVersion = CurrentVersion - - setDefaults(&cfg) - setDefaults(&cfg.Options) - setDefaults(&cfg.GUI) - - cfg.prepare(myID) - - return cfg -} - -func ReadXML(r io.Reader, myID protocol.DeviceID) (Configuration, error) { - var cfg Configuration - - setDefaults(&cfg) - setDefaults(&cfg.Options) - setDefaults(&cfg.GUI) - - err := xml.NewDecoder(r).Decode(&cfg) - cfg.OriginalVersion = cfg.Version - - cfg.prepare(myID) - return cfg, err -} - func (cfg *Configuration) WriteXML(w io.Writer) error { e := xml.NewEncoder(w) e.Indent("", " ") @@ -141,6 +141,9 @@ func (cfg *Configuration) prepare(myID protocol.DeviceID) { if cfg.IgnoredDevices == nil { cfg.IgnoredDevices = []protocol.DeviceID{} } + if cfg.Options.AlwaysLocalNets == nil { + cfg.Options.AlwaysLocalNets = []string{} + } // Check for missing, bad or duplicate folder ID:s var seenFolders = map[string]*FolderConfiguration{} diff --git a/lib/config/config_test.go b/lib/config/config_test.go index 64623997..28da9b91 100644 --- a/lib/config/config_test.go +++ b/lib/config/config_test.go @@ -62,6 +62,7 @@ func TestDefaultValues(t *testing.T) { URInitialDelayS: 1800, URPostInsecurely: false, ReleasesURL: "https://api.github.com/repos/syncthing/syncthing/releases?per_page=30", + AlwaysLocalNets: []string{}, } cfg := New(device1) @@ -185,6 +186,7 @@ func TestOverriddenValues(t *testing.T) { URInitialDelayS: 800, URPostInsecurely: true, ReleasesURL: "https://localhost/releases", + AlwaysLocalNets: []string{}, } cfg, err := Load("testdata/overridenvalues.xml", device1)