]> Sergey Matveev's repositories - btrtrc.git/commitdiff
dht: Fix race contacting starting addrs in Announce
authorMatt Joiner <anacrolix@gmail.com>
Sat, 7 May 2016 09:02:30 +0000 (19:02 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Sat, 7 May 2016 09:02:30 +0000 (19:02 +1000)
dht/announce.go

index cff0ac731f0951777789f112d7f83a74379f3aec..ead301a451b486a46be2cebb292b23cb020377b8 100644 (file)
@@ -96,13 +96,15 @@ func (s *Server) Announce(infoHash string, port int, impliedPort bool) (*Announc
                }
        }()
        go func() {
+               disc.mu.Lock()
+               defer disc.mu.Unlock()
                for i, addr := range startAddrs {
                        if i != 0 {
+                               disc.mu.Unlock()
                                time.Sleep(time.Millisecond)
+                               disc.mu.Lock()
                        }
-                       disc.mu.Lock()
                        disc.contact(addr)
-                       disc.mu.Unlock()
                }
                disc.contactedStartAddrs = true
                // If we failed to contact any of the starting addrs, no transactions