]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Fix locks around Torrent.announceRequest
authorMatt Joiner <anacrolix@gmail.com>
Mon, 13 Apr 2020 09:13:59 +0000 (19:13 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Mon, 13 Apr 2020 09:13:59 +0000 (19:13 +1000)
torrent.go
tracker_scraper.go

index 51a8cce57a1efa4c577998f8b4de5b10324d8ff1..c12d521158717246a9e6c1e6ab8ff1f841b8b1ab 100644 (file)
@@ -1321,8 +1321,9 @@ func (t *Torrent) startScrapingTracker(_url string) {
                                t.logger.WithText(func(m log.Msg) string {
                                        return fmt.Sprintf("%q: %v", u.String(), m.Text())
                                }).WithValues(log.Debug))}
+                       ar := t.announceRequest(tracker.Started)
                        go func() {
-                               err := wst.TrackerClient.Run(t.announceRequest(tracker.Started), u.String())
+                               err := wst.TrackerClient.Run(ar, u.String())
                                if err != nil {
                                        t.logger.WithValues(log.Error).Printf(
                                                "error running websocket tracker announcer for %q: %v",
index b664b2bfc26e0d105a373a041b31407638ed2a7b..c580afc93eddbb7f4cd889f5e3fec9828a593611 100644 (file)
@@ -113,9 +113,9 @@ func (me *trackerScraper) announce(event tracker.AnnounceEvent) (ret trackerAnno
                ret.Err = fmt.Errorf("error getting ip: %s", err)
                return
        }
-       me.t.cl.lock()
+       me.t.cl.rLock()
        req := me.t.announceRequest(event)
-       me.t.cl.unlock()
+       me.t.cl.rUnlock()
        //log.Printf("announcing %s %s to %q", me.t, req.Event, me.u.String())
        res, err := tracker.Announce{
                HTTPProxy:  me.t.cl.config.HTTPProxy,