From eec337d4bcb30d71542fc57b5ab9d14759f9ec03 Mon Sep 17 00:00:00 2001
From: Matt Joiner <anacrolix@gmail.com>
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.51.0