Unverified Commit fb5d0852 authored by Guillaume Ballet's avatar Guillaume Ballet Committed by GitHub

Merge pull request #16146 from status-im/pombeirp/whisperv6-peer-race-cond-fix

Fix race condition in whisperv6/peer.go
parents 44d40ffc 34d94e22
...@@ -19,6 +19,7 @@ package whisperv6 ...@@ -19,6 +19,7 @@ package whisperv6
import ( import (
"fmt" "fmt"
"math" "math"
"sync"
"time" "time"
"github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common"
...@@ -36,6 +37,7 @@ type Peer struct { ...@@ -36,6 +37,7 @@ type Peer struct {
trusted bool trusted bool
powRequirement float64 powRequirement float64
bloomMu sync.Mutex
bloomFilter []byte bloomFilter []byte
fullNode bool fullNode bool
...@@ -225,10 +227,14 @@ func (peer *Peer) notifyAboutBloomFilterChange(bloom []byte) error { ...@@ -225,10 +227,14 @@ func (peer *Peer) notifyAboutBloomFilterChange(bloom []byte) error {
} }
func (peer *Peer) bloomMatch(env *Envelope) bool { func (peer *Peer) bloomMatch(env *Envelope) bool {
peer.bloomMu.Lock()
defer peer.bloomMu.Unlock()
return peer.fullNode || bloomFilterMatch(peer.bloomFilter, env.Bloom()) return peer.fullNode || bloomFilterMatch(peer.bloomFilter, env.Bloom())
} }
func (peer *Peer) setBloomFilter(bloom []byte) { func (peer *Peer) setBloomFilter(bloom []byte) {
peer.bloomMu.Lock()
defer peer.bloomMu.Unlock()
peer.bloomFilter = bloom peer.bloomFilter = bloom
peer.fullNode = isFullNode(bloom) peer.fullNode = isFullNode(bloom)
if peer.fullNode && peer.bloomFilter == nil { if peer.fullNode && peer.bloomFilter == nil {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment