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()