chore(stdiscosrv): ensure incoming addresses are sorted and unique

This commit is contained in:
Jakob Borg
2024-09-15 17:01:16 +02:00
parent 8b19cb1e11
commit 5b9d8a838f
2 changed files with 10 additions and 4 deletions
+5 -4
View File
@@ -307,16 +307,17 @@ func (s *apiSrv) handleAnnounce(deviceID protocol.DeviceID, addresses []string)
now := time.Now()
expire := now.Add(addressExpiryTime).UnixNano()
// The address slice must always be sorted for database merges to work
// properly.
slices.Sort(addresses)
addresses = slices.Compact(addresses)
dbAddrs := make([]DatabaseAddress, len(addresses))
for i := range addresses {
dbAddrs[i].Address = addresses[i]
dbAddrs[i].Expires = expire
}
// The address slice must always be sorted for database merges to work
// properly.
slices.SortFunc(dbAddrs, DatabaseAddress.Cmp)
seen := now.UnixNano()
if s.repl != nil {
s.repl.send(&deviceID, dbAddrs, seen)