diff --git a/cmd/managementd/main.go b/cmd/managementd/main.go index 9c6a69a..8657701 100644 --- a/cmd/managementd/main.go +++ b/cmd/managementd/main.go @@ -366,7 +366,7 @@ func handleConn(conn net.Conn) error { log.Println("Error reading frame ", err) return err } - if len(sockets) == 0 { + if !hasActiveClients() { continue } if err := lepton3.ParseRawFrame(rawFrame, frame, 0); err != nil { @@ -469,9 +469,11 @@ func WebsocketServer(ws *websocket.Conn) { } } if message.Type == "Heartbeat" { + socketsLock.Lock() if socket, ok := sockets[message.Uuid]; ok { socket.LastHeartbeatAt = time.Now() } + socketsLock.Unlock() } } time.Sleep(1 * time.Millisecond) @@ -496,7 +498,7 @@ func sendFrameToSockets() { // NOTE: Only bother with this work if we have clients connected. lastFrame = <-frameCh - if len(sockets) != 0 { + if hasActiveClients() { if lastFrame.Disconnected { socketsLock.RLock() for uuid, socket := range sockets { diff --git a/management-interface.go b/management-interface.go index 5103699..fcf8429 100644 --- a/management-interface.go +++ b/management-interface.go @@ -89,7 +89,7 @@ func getDeviceName() string { return strings.SplitN(name, ".", 2)[0] } -// Return the serial number for the Raspberr Pi in the device. +// Return the serial number for the Raspberry Pi in the device. func getRaspberryPiSerialNumber() string { if runtime.GOOS == "windows" { return ""