1
0
mirror of https://github.com/StackExchange/dnscontrol.git synced 2024-05-11 05:55:12 +00:00

GANDI_V5 & DESEC: correctly handle multiple RR in a RRset (#1296)

When having multiple RR in a RRset, only a few of them may be applied.
In my case, when I have two A records, only one of them makes its way
to Gandi.

In `convert.go`, we had:

```go
var zrs []livedns.DomainRecord
// [...]
zrs = append(zrs, zr)
keys[key] = &zrs[len(zrs)-1]
```

If the slice needs to be extended when appending, the reference we got
in `keys[key]` may be outdated because the new slice contains a copy
of the old one. We either need to store references to domain records
in the slice or we need to stop keeping reference of items in the
slice.

I have fixed this with the second solution as I think the order of the
RRsets is not important.
This commit is contained in:
Vincent Bernat
2021-11-01 20:41:37 +01:00
committed by GitHub
parent ceeb44ff59
commit c44ed88659
2 changed files with 8 additions and 8 deletions

View File

@@ -63,10 +63,7 @@ func recordsToNative(rcs []*models.RecordConfig, origin string) []livedns.Domain
RrsetName: label,
RrsetValues: []string{r.GetTargetCombined()},
}
zrs = append(zrs, zr)
//keys[key] = &zr // This didn't work.
keys[key] = &zrs[len(zrs)-1] // This does work. I don't know why.
keys[key] = &zr
} else {
zr.RrsetValues = append(zr.RrsetValues, r.GetTargetCombined())
@@ -80,5 +77,8 @@ func recordsToNative(rcs []*models.RecordConfig, origin string) []livedns.Domain
}
}
for _, zr := range keys {
zrs = append(zrs, *zr)
}
return zrs
}