diff --git a/metainfo/announcelist.go b/metainfo/announcelist.go index b371f70d..f19af14c 100644 --- a/metainfo/announcelist.go +++ b/metainfo/announcelist.go @@ -21,13 +21,14 @@ func (al AnnounceList) OverridesAnnounce(announce string) bool { return false } -func (al AnnounceList) DistinctValues() (ret map[string]struct{}) { +func (al AnnounceList) DistinctValues() (ret []string) { + seen := make(map[string]struct{}) for _, tier := range al { for _, v := range tier { - if ret == nil { - ret = make(map[string]struct{}) + if _, ok := seen[v]; !ok { + seen[v] = struct{}{} + ret = append(ret, v) } - ret[v] = struct{}{} } } return diff --git a/metainfo/metainfo.go b/metainfo/metainfo.go index 9041fced..24b8714a 100644 --- a/metainfo/metainfo.go +++ b/metainfo/metainfo.go @@ -70,7 +70,7 @@ func (mi *MetaInfo) SetDefaults() { // Creates a Magnet from a MetaInfo. Optional infohash and parsed info can be provided. func (mi *MetaInfo) Magnet(infoHash *Hash, info *Info) (m Magnet) { - for t := range mi.UpvertedAnnounceList().DistinctValues() { + for _, t := range mi.UpvertedAnnounceList().DistinctValues() { m.Trackers = append(m.Trackers, t) } if info != nil {