tracker_scraper.go | 13 +++++++++---- diff --git a/tracker_scraper.go b/tracker_scraper.go index a91870225a2d35092d61b75fd0132312dba59c8c..2e177badea2b9c904471895249bf6280dac5896b 100644 --- a/tracker_scraper.go +++ b/tracker_scraper.go @@ -138,12 +138,17 @@ me.lastAnnounce = ar me.t.cl.unlock() wait: - interval := time.Until(ar.Completed.Add(ar.Interval)) + interval := ar.Interval + if interval < time.Minute { + interval = time.Minute + } + wantPeers := me.t.wantPeersEvent.LockedChan(me.t.cl.locker()) select { - case <-me.t.wantPeersEvent.LockedChan(me.t.cl.locker()): + case <-wantPeers: if interval > time.Minute { interval = time.Minute } + wantPeers = nil default: } @@ -152,9 +157,9 @@ case <-me.t.closed.LockedChan(me.t.cl.locker()): return case <-me.stop.LockedChan(me.t.cl.locker()): return - case <-time.After(interval): - case <-me.t.wantPeersEvent.LockedChan(me.t.cl.locker()): + case <-wantPeers: goto wait + case <-time.After(time.Until(ar.Completed.Add(interval))): } } }