From eec337d4bcb30d71542fc57b5ab9d14759f9ec03 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Thu, 16 Apr 2020 12:02:34 +1000 Subject: [PATCH] Set tracker announce numWant to 0 if we're unable to dial --- torrent.go | 14 ++++++++++---- tracker_scraper.go | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/torrent.go b/torrent.go index 872c9102..ba94d805 100644 --- a/torrent.go +++ b/torrent.go @@ -1379,11 +1379,17 @@ func (t *Torrent) startMissingTrackerScrapers() { // Returns an AnnounceRequest with fields filled out to defaults and current // values. func (t *Torrent) announceRequest(event tracker.AnnounceEvent) tracker.AnnounceRequest { - // Note that IPAddress is not set. It's set for UDP inside the tracker - // code, since it's dependent on the network in use. + // Note that IPAddress is not set. It's set for UDP inside the tracker code, since it's + // dependent on the network in use. return tracker.AnnounceRequest{ - Event: event, - NumWant: -1, + Event: event, + NumWant: func() int32 { + if t.wantPeers() && len(t.cl.dialers) > 0 { + return -1 + } else { + return 0 + } + }(), Port: uint16(t.cl.incomingPeerPort()), PeerId: t.cl.peerID, InfoHash: t.infoHash, diff --git a/tracker_scraper.go b/tracker_scraper.go index 86d45c8f..50b582c2 100644 --- a/tracker_scraper.go +++ b/tracker_scraper.go @@ -116,7 +116,7 @@ func (me *trackerScraper) announce(event tracker.AnnounceEvent) (ret trackerAnno me.t.cl.rLock() req := me.t.announceRequest(event) me.t.cl.rUnlock() - //log.Printf("announcing %s %s to %q", me.t, req.Event, me.u.String()) + me.t.logger.Printf("announcing to %q: %#v", me.u.String(), req) res, err := tracker.Announce{ HTTPProxy: me.t.cl.config.HTTPProxy, UserAgent: me.t.cl.config.HTTPUserAgent, -- 2.48.1