From f9812d3ef8848c4b6c9d06d746c6247b4f6416c2 Mon Sep 17 00:00:00 2001 From: boyska Date: Sun, 30 Jul 2017 01:51:27 +0200 Subject: [PATCH] fix race in UIserver --- uiserver/server.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/uiserver/server.go b/uiserver/server.go index 0d0fc86..0e08c40 100644 --- a/uiserver/server.go +++ b/uiserver/server.go @@ -57,6 +57,7 @@ type NetUI struct { workers []Worker workersMutex sync.Mutex sock *net.Listener + sockMu sync.Mutex exit chan interface{} } @@ -95,6 +96,8 @@ func (n *NetUI) Update() { // Close shuts the TCPserver down synchronously func (n *NetUI) Close() { + n.sockMu.Lock() + defer n.sockMu.Unlock() if n.sock != nil { (*n.sock).Close() } @@ -141,7 +144,9 @@ func (n *NetUI) Run(sock net.Listener) error { if n.sock != nil { return fmt.Errorf("More than one Run for a single NetUI is currently unsupported") } + n.sockMu.Lock() n.sock = &sock + n.sockMu.Unlock() defer sock.Close() for { conn, err := sock.Accept()