cmd/torrent-pick/main.go | 12 +++++++----- cmd/torrent/main.go | 9 ++++----- cmd/torrentfs/main.go | 11 +++++------ fs/torrentfs_test.go | 43 +++++++++++++++++++++---------------------- diff --git a/cmd/torrent-pick/main.go b/cmd/torrent-pick/main.go index 0fb6971d7de0738551054f97665835a45fc58f22..eada56876454a24bbe8db65da74623037eaa933c 100644 --- a/cmd/torrent-pick/main.go +++ b/cmd/torrent-pick/main.go @@ -79,10 +79,12 @@ } func main() { log.SetFlags(log.LstdFlags | log.Lshortfile) - var rootGroup struct { - Client torrent.Config `group:"Client Options"` - TestPeers []string `long:"test-peer" description:"address of peer to inject to every torrent"` - Pick string `long:"pick" description:"filename to pick"` + var rootGroup = struct { + Client *torrent.ClientConfig `group:"Client Options"` + TestPeers []string `long:"test-peer" description:"address of peer to inject to every torrent"` + Pick string `long:"pick" description:"filename to pick"` + }{ + Client: torrent.NewDefaultClientConfig(), } // Don't pass flags.PrintError because it's inconsistent with printing. // https://github.com/jessevdk/go-flags/issues/132 @@ -115,7 +117,7 @@ defer os.RemoveAll(tmpdir) rootGroup.Client.DataDir = tmpdir - client, err := torrent.NewClient(&rootGroup.Client) + client, err := torrent.NewClient(rootGroup.Client) if err != nil { log.Fatalf("error creating client: %s", err) } diff --git a/cmd/torrent/main.go b/cmd/torrent/main.go index 1d9b4944d568b0e642767fa346e29e9a939fb44c..e97ce9d732225773dfae2f45365201c58ce9bc28 100644 --- a/cmd/torrent/main.go +++ b/cmd/torrent/main.go @@ -155,10 +155,9 @@ func main() { log.SetFlags(log.LstdFlags | log.Lshortfile) tagflag.Parse(&flags) defer envpprof.Stop() - clientConfig := torrent.Config{ - Debug: flags.Debug, - Seed: flags.Seed, - } + clientConfig := torrent.NewDefaultClientConfig() + clientConfig.Debug = flags.Debug + clientConfig.Seed = flags.Seed if flags.PackedBlocklist != "" { blocklist, err := iplist.MMapPackedFile(flags.PackedBlocklist) if err != nil { @@ -180,7 +179,7 @@ if flags.DownloadRate != -1 { clientConfig.DownloadRateLimiter = rate.NewLimiter(rate.Limit(flags.DownloadRate), 1<<20) } - client, err := torrent.NewClient(&clientConfig) + client, err := torrent.NewClient(clientConfig) if err != nil { log.Fatalf("error creating client: %s", err) } diff --git a/cmd/torrentfs/main.go b/cmd/torrentfs/main.go index 3cc778124e11bf7575ede99c00071adf2f6ece3e..b2d34efe53b3ed45a365655d8a02744fb5fe1b29 100644 --- a/cmd/torrentfs/main.go +++ b/cmd/torrentfs/main.go @@ -86,13 +86,12 @@ } defer fuse.Unmount(args.MountDir) // TODO: Think about the ramifications of exiting not due to a signal. defer conn.Close() - cfg := torrent.Config{ - DataDir: args.DownloadDir, - DisableTrackers: args.DisableTrackers, - NoUpload: true, // Ensure that downloads are responsive. - } + cfg := torrent.NewDefaultClientConfig() + cfg.DataDir = args.DownloadDir + cfg.DisableTrackers = args.DisableTrackers + cfg.NoUpload = true // Ensure that downloads are responsive. cfg.SetListenAddr(args.ListenAddr.String()) - client, err := torrent.NewClient(&cfg) + client, err := torrent.NewClient(cfg) if err != nil { log.Print(err) return 1 diff --git a/fs/torrentfs_test.go b/fs/torrentfs_test.go index c8cacc5d37b105d378a6907cb7145cc272e92053..8ac69bb70731e7285a6fa7a85c7f995e8ca9e106 100644 --- a/fs/torrentfs_test.go +++ b/fs/torrentfs_test.go @@ -88,13 +88,13 @@ if err != nil { t.Log(err) } }() - client, err := torrent.NewClient(&torrent.Config{ - DataDir: filepath.Join(layout.BaseDir, "incomplete"), - DisableTrackers: true, - NoDHT: true, - DisableTCP: true, - DisableUTP: true, - }) + cfg := torrent.NewDefaultClientConfig() + cfg.DataDir = filepath.Join(layout.BaseDir, "incomplete") + cfg.DisableTrackers = true + cfg.NoDHT = true + cfg.DisableTCP = true + cfg.DisableUTP = true + client, err := torrent.NewClient(cfg) require.NoError(t, err) defer client.Close() tt, err := client.AddTorrent(layout.Metainfo) @@ -165,14 +165,13 @@ func TestDownloadOnDemand(t *testing.T) { layout, err := newGreetingLayout() require.NoError(t, err) defer layout.Destroy() - cfg := torrent.Config{ - DataDir: layout.Completed, - DisableTrackers: true, - NoDHT: true, - Seed: true, - ListenHost: torrent.LoopbackListenHost, - } - seeder, err := torrent.NewClient(&cfg) + cfg := torrent.NewDefaultClientConfig() + cfg.DataDir = layout.Completed + cfg.DisableTrackers = true + cfg.NoDHT = true + cfg.Seed = true + cfg.ListenHost = torrent.LoopbackListenHost + seeder, err := torrent.NewClient(cfg) require.NoError(t, err) defer seeder.Close() testutil.ExportStatusWriter(seeder, "s") @@ -185,13 +184,13 @@ // Wait until we get the metainfo, then check for the data. <-seederTorrent.GotInfo() seederTorrent.VerifyData() }() - leecher, err := torrent.NewClient(&torrent.Config{ - DisableTrackers: true, - NoDHT: true, - DisableTCP: true, - DefaultStorage: storage.NewMMap(filepath.Join(layout.BaseDir, "download")), - ListenHost: torrent.LoopbackListenHost, - }) + cfg = torrent.NewDefaultClientConfig() + cfg.DisableTrackers = true + cfg.NoDHT = true + cfg.DisableTCP = true + cfg.DefaultStorage = storage.NewMMap(filepath.Join(layout.BaseDir, "download")) + cfg.ListenHost = torrent.LoopbackListenHost + leecher, err := torrent.NewClient(cfg) require.NoError(t, err) testutil.ExportStatusWriter(leecher, "l") defer leecher.Close()