From: Matt Joiner Date: Wed, 17 Oct 2018 23:35:38 +0000 (+1100) Subject: Always announce to trackers every interval, and announce earlier if short on peers X-Git-Tag: v1.0.0~38 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=5e3f9893f3e940392b70577542f6bc962a264a7b;p=btrtrc.git Always announce to trackers every interval, and announce earlier if short on peers --- diff --git a/tracker_scraper.go b/tracker_scraper.go index ed20a7fd..eefa92e8 100644 --- a/tracker_scraper.go +++ b/tracker_scraper.go @@ -132,27 +132,29 @@ func (me *trackerScraper) announce() (ret trackerAnnounceResult) { func (me *trackerScraper) Run() { for { - select { - case <-me.t.closed.LockedChan(me.t.cl.locker()): - return - case <-me.stop.LockedChan(me.t.cl.locker()): - return - case <-me.t.wantPeersEvent.LockedChan(me.t.cl.locker()): - } - ar := me.announce() me.t.cl.lock() me.lastAnnounce = ar me.t.cl.unlock() - intervalChan := time.After(time.Until(ar.Completed.Add(ar.Interval))) + wait: + interval := time.Until(ar.Completed.Add(ar.Interval)) + select { + case <-me.t.wantPeersEvent.LockedChan(me.t.cl.locker()): + if interval > time.Minute { + interval = time.Minute + } + default: + } select { case <-me.t.closed.LockedChan(me.t.cl.locker()): return case <-me.stop.LockedChan(me.t.cl.locker()): return - case <-intervalChan: + case <-time.After(interval): + case <-me.t.wantPeersEvent.LockedChan(me.t.cl.locker()): + goto wait } } }