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
}
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

View 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 {