From: Matt Joiner Date: Tue, 9 Feb 2021 06:05:02 +0000 (+1100) Subject: Add minimal reproducing code for issue 465 X-Git-Tag: v1.25.0~3 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=ce44a4c3f2862f5e26072a53b2e193bb2e008767;p=btrtrc.git Add minimal reproducing code for issue 465 From https://github.com/anacrolix/torrent/issues/465#issuecomment-774869977. --- diff --git a/internal/cmd/issue-465/main.go b/internal/cmd/issue-465/main.go new file mode 100644 index 00000000..3fc95593 --- /dev/null +++ b/internal/cmd/issue-465/main.go @@ -0,0 +1,66 @@ +package main + +import ( + "errors" + "fmt" + "net/http" + "os" + + "github.com/anacrolix/torrent" + "github.com/anacrolix/torrent/metainfo" +) + +func main() { + if err := dlTorrents("."); err != nil { + fmt.Fprintln(os.Stderr, err) + } +} + +func dlTorrents(dir string) error { + conf := torrent.NewDefaultClientConfig() + conf.DataDir = dir + cl, err := torrent.NewClient(conf) + if err != nil { + return err + } + ids := []string{ + "urlteam_2021-02-03-21-17-02", + "urlteam_2021-02-02-11-17-02", + "urlteam_2021-01-31-11-17-02", + "urlteam_2021-01-30-21-17-01", + "urlteam_2021-01-29-21-17-01", + "urlteam_2021-01-28-11-17-01", + "urlteam_2021-01-27-11-17-02", + "urlteam_2021-01-26-11-17-02", + "urlteam_2021-01-25-03-17-02", + "urlteam_2021-01-24-03-17-02", + } + for _, id := range ids { + t, err := addTorrentFromURL(cl, fmt.Sprintf("https://archive.org/download/%s/%s_archive.torrent", id, id)) + if err != nil { + return err + } + t.DownloadAll() + } + if !cl.WaitAll() { + return errors.New("client stopped early") + } + return nil +} + +func addTorrentFromURL(cl *torrent.Client, url string) (*torrent.Torrent, error) { + fmt.Printf("Adding torrent: %s\n", url) + resp, err := http.Get(url) + if err != nil { + return nil, err + } + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("status %s", resp.Status) + } + defer resp.Body.Close() + meta, err := metainfo.Load(resp.Body) + if err != nil { + return nil, err + } + return cl.AddTorrent(meta) +}