les/vflux/client, p2p/nodestate: fix data races (#24058)

Fixes #23848
This commit is contained in:
Felföldi Zsolt
2021-12-14 11:34:50 +01:00
committed by GitHub
parent 155795be99
commit fc01a7ce8e
2 changed files with 42 additions and 6 deletions

View File

@ -808,7 +808,14 @@ func (ns *NodeStateMachine) addTimeout(n *enode.Node, mask bitMask, timeout time
ns.removeTimeouts(node, mask)
t := &nodeStateTimeout{mask: mask}
t.timer = ns.clock.AfterFunc(timeout, func() {
ns.SetState(n, Flags{}, Flags{mask: t.mask, setup: ns.setup}, 0)
ns.lock.Lock()
defer ns.lock.Unlock()
if !ns.opStart() {
return
}
ns.setState(n, Flags{}, Flags{mask: t.mask, setup: ns.setup}, 0)
ns.opFinish()
})
node.timeouts = append(node.timeouts, t)
if mask&ns.saveFlags != 0 {