metainfo/announcelist.go | 7 +++++++ torrent.go | 2 +- diff --git a/metainfo/announcelist.go b/metainfo/announcelist.go index 3a5c09d48349f896134b4ba7e0cb7429d3553853..b371f70d4e31d7fd23882fff3e2bd047d5db0f01 100644 --- a/metainfo/announcelist.go +++ b/metainfo/announcelist.go @@ -2,6 +2,13 @@ package metainfo type AnnounceList [][]string +func (al AnnounceList) Clone() (ret AnnounceList) { + for _, tier := range al { + ret = append(ret, append([]string(nil), tier...)) + } + return +} + // Whether the AnnounceList should be preferred over a single URL announce. func (al AnnounceList) OverridesAnnounce(announce string) bool { for _, tier := range al { diff --git a/torrent.go b/torrent.go index db0126bfac1ccd8b3f03d23b463924dca41dca20..d29c9a923525eff29ac18a0d15f699fcc8550a07 100644 --- a/torrent.go +++ b/torrent.go @@ -633,7 +633,7 @@ return metainfo.MetaInfo{ CreationDate: time.Now().Unix(), Comment: "dynamic metainfo from client", CreatedBy: "go.torrent", - AnnounceList: t.metainfo.UpvertedAnnounceList(), + AnnounceList: t.metainfo.UpvertedAnnounceList().Clone(), InfoBytes: func() []byte { if t.haveInfo() { return t.metadataBytes