Make tracker order in Metainfo.Magnet deterministic

Should fix test failures in CI.
This commit is contained in:
Matt Joiner 2021-03-25 09:51:49 +11:00
parent b4fd8ff1b9
commit 80cfe96c8b
2 changed files with 6 additions and 5 deletions

View File

@ -21,13 +21,14 @@ func (al AnnounceList) OverridesAnnounce(announce string) bool {
return false 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 _, tier := range al {
for _, v := range tier { for _, v := range tier {
if ret == nil { if _, ok := seen[v]; !ok {
ret = make(map[string]struct{}) seen[v] = struct{}{}
ret = append(ret, v)
} }
ret[v] = struct{}{}
} }
} }
return return

View File

@ -70,7 +70,7 @@ func (mi *MetaInfo) SetDefaults() {
// Creates a Magnet from a MetaInfo. Optional infohash and parsed info can be provided. // Creates a Magnet from a MetaInfo. Optional infohash and parsed info can be provided.
func (mi *MetaInfo) Magnet(infoHash *Hash, info *Info) (m Magnet) { 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) m.Trackers = append(m.Trackers, t)
} }
if info != nil { if info != nil {