Fix a race in the amgr found by the race detector.

This commit is contained in:
Dave Collins 2014-02-05 12:37:35 -06:00
parent 6f063e0c1b
commit bc6ff038e3

View file

@ -140,7 +140,11 @@ func (a *AddrManager) updateAddress(netAddr, srcAddr *btcwire.NetAddress) {
return
}
} else {
ka = &knownAddress{na: netAddr, srcAddr: srcAddr}
// Make a copy of the net address to avoid races since it is
// updated elsewhere in the addrmanager code and would otherwise
// change the actual netaddress on the peer.
netAddrCopy := *netAddr
ka = &knownAddress{na: &netAddrCopy, srcAddr: srcAddr}
a.addrIndex[addr] = ka
a.nNew++
// XXX time penalty?