]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Make tracker order in Metainfo.Magnet deterministic
authorMatt Joiner <anacrolix@gmail.com>
Wed, 24 Mar 2021 22:51:49 +0000 (09:51 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Wed, 24 Mar 2021 22:51:49 +0000 (09:51 +1100)
Should fix test failures in CI.

metainfo/announcelist.go
metainfo/metainfo.go

index b371f70d4e31d7fd23882fff3e2bd047d5db0f01..f19af14ccd04a4442ccd64812d793e0c616f51d1 100644 (file)
@@ -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
index 9041fced8ffb17d3329387f988e8b84108866f8e..24b8714acf81492c47068e352bd92701ca386a31 100644 (file)
@@ -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 {