diff --git a/config.go b/config.go index efcbd3d..633bae2 100644 --- a/config.go +++ b/config.go @@ -61,7 +61,8 @@ func prepareConfig(cfg *Config) (*Config, error) { // populate user map cfg.users = map[string]*User{} - for _, user := range cfg.Users { + for u := range cfg.Users { + user := &cfg.Users[u] if _, ok := cfg.users[user.Username]; ok { return nil, fmt.Errorf("Duplicate username detected: %s", user.Username) } @@ -80,12 +81,14 @@ func prepareConfig(cfg *Config) (*Config, error) { user.records[record] = true globRecords[record] = true } - cfg.users[user.Username] = &user + cfg.users[user.Username] = user } // populate record map cfg.rrconfigs = map[string]*RRConfig{} - for _, record := range cfg.RRConfigs { + for r := range cfg.RRConfigs { + record := &cfg.RRConfigs[r] + // check for duplicate record before verifying association to users if _, ok := cfg.rrconfigs[record.Recordname]; ok { return nil, fmt.Errorf("Duplicate record detected: %s", record.Recordname) @@ -97,7 +100,7 @@ func prepareConfig(cfg *Config) (*Config, error) { // need to remove record from globRecords for detecting orphaned records delete(globRecords, record.Recordname) - cfg.rrconfigs[record.Recordname] = &record + cfg.rrconfigs[record.Recordname] = record } // check whether all records have been processed