metainfo/announcelist.go | 9 +++++---- metainfo/metainfo.go | 2 +- diff --git a/metainfo/announcelist.go b/metainfo/announcelist.go index b371f70d4e31d7fd23882fff3e2bd047d5db0f01..f19af14ccd04a4442ccd64812d793e0c616f51d1 100644 --- a/metainfo/announcelist.go +++ b/metainfo/announcelist.go @@ -21,13 +21,14 @@ } 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 9041fced8ffb17d3329387f988e8b84108866f8e..24b8714acf81492c47068e352bd92701ca386a31 100644 --- a/metainfo/metainfo.go +++ b/metainfo/metainfo.go @@ -70,7 +70,7 @@ } // 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 {