From 7eebcef0a5993ed7d8ff1436dc6af9d743253c39 Mon Sep 17 00:00:00 2001 From: Iwan Budi Kusnanto Date: Sun, 24 Mar 2019 22:02:50 +0700 Subject: [PATCH] Fix data race in `message` --- message.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/message.go b/message.go index 157e9a6..a48da17 100644 --- a/message.go +++ b/message.go @@ -48,17 +48,22 @@ func newMessageFromBuf(b []byte) (*message, error) { } func (m *message) add(key, val string, expired int64, deleted bool) { + m.mux.Lock() m.Entries[key] = entry{ Key: key, Val: val, Expired: expired, Deleted: deleted, } + m.mux.Unlock() } // Encode implements mesh.GossipData.Encode // TODO: split the encoding by X number of keys func (m *message) Encode() [][]byte { + m.mux.RLock() + defer m.mux.RUnlock() + b, err := marshal(m) if err != nil { log.Printf("failed to encode message: %v", err)