From 7a3c30729bdec9890dbce196bfbff20719e2c6ad Mon Sep 17 00:00:00 2001 From: andig Date: Tue, 15 Mar 2022 21:44:22 +0000 Subject: [PATCH] Fix data race --- util/modbus/modbus.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/util/modbus/modbus.go b/util/modbus/modbus.go index e457f4690..3a86b6e7b 100644 --- a/util/modbus/modbus.go +++ b/util/modbus/modbus.go @@ -5,6 +5,7 @@ import ( "fmt" "strconv" "strings" + "sync" "time" "github.com/evcc-io/evcc/util" @@ -146,9 +147,15 @@ func (mb *Connection) ReadFIFOQueue(address uint16) (results []byte, err error) return mb.handle(mb.conn.ModbusClient().ReadFIFOQueue(address)) } -var connections = make(map[string]meters.Connection) +var ( + connections = make(map[string]meters.Connection) + mu sync.Mutex +) func registeredConnection(key string, newConn meters.Connection) meters.Connection { + mu.Lock() + defer mu.Unlock() + if conn, ok := connections[key]; ok { return conn }