fix race in UIserver

This commit is contained in:
boyska 2017-07-30 01:51:27 +02:00
parent 8b861245c0
commit f9812d3ef8

View file

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