From 34d94e22d9c9f3c2373a398269ecbba0139827d2 Mon Sep 17 00:00:00 2001
From: Pedro Pombeiro <pombeirp@users.noreply.github.com>
Date: Tue, 20 Feb 2018 18:20:33 +0100
Subject: [PATCH] whisper: Fix race condition in whisperv6/peer.go

---
 whisper/whisperv6/peer.go | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/whisper/whisperv6/peer.go b/whisper/whisperv6/peer.go
index 4ef0f3c43..6d75290fd 100644
--- a/whisper/whisperv6/peer.go
+++ b/whisper/whisperv6/peer.go
@@ -19,6 +19,7 @@ package whisperv6
 import (
 	"fmt"
 	"math"
+	"sync"
 	"time"
 
 	"github.com/ethereum/go-ethereum/common"
@@ -36,6 +37,7 @@ type Peer struct {
 
 	trusted        bool
 	powRequirement float64
+	bloomMu        sync.Mutex
 	bloomFilter    []byte
 	fullNode       bool
 
@@ -225,10 +227,14 @@ func (peer *Peer) notifyAboutBloomFilterChange(bloom []byte) error {
 }
 
 func (peer *Peer) bloomMatch(env *Envelope) bool {
+	peer.bloomMu.Lock()
+	defer peer.bloomMu.Unlock()
 	return peer.fullNode || bloomFilterMatch(peer.bloomFilter, env.Bloom())
 }
 
 func (peer *Peer) setBloomFilter(bloom []byte) {
+	peer.bloomMu.Lock()
+	defer peer.bloomMu.Unlock()
 	peer.bloomFilter = bloom
 	peer.fullNode = isFullNode(bloom)
 	if peer.fullNode && peer.bloomFilter == nil {
-- 
GitLab