eth/fetcher: fix a closure data race

This commit is contained in:
Péter Szilágyi 2015-06-22 20:13:18 +03:00
parent 99ca4b619b
commit 3ce17d2862
1 changed files with 3 additions and 2 deletions

View File

@ -281,12 +281,13 @@ func (f *Fetcher) loop() {
glog.V(logger.Detail).Infof("Peer %s: fetching %s", peer, list)
}
hashes := hashes // closure!
// Create a closure of the fetch and schedule in on a new thread
fetcher, hashes := f.fetching[hashes[0]].fetch, hashes
go func() {
if f.fetchingHook != nil {
f.fetchingHook(hashes)
}
f.fetching[hashes[0]].fetch(hashes)
fetcher(hashes)
}()
}
// Schedule the next fetch if blocks are still pending