diff --git a/engine/engine.go b/engine/engine.go index d832aa2..18ef4f0 100644 --- a/engine/engine.go +++ b/engine/engine.go @@ -49,7 +49,7 @@ func BuildEngine(conf *Configuration) (*Engine, error) { func (engine *Engine) Loop() { for { - engine.rooms.RLock() + engine.rooms.Lock() engine.State.UpdatedAt = time.Now() engine.State.ActiveRooms = 0 @@ -57,7 +57,7 @@ func (engine *Engine) Loop() { engine.State.ActivePeers = 0 engine.State.ClosedPeers = 0 - for _, pm := range engine.rooms.m { + for rid, pm := range engine.rooms.m { pm.RLock() ap, cp := 0, 0 for _, p := range pm.m { @@ -73,11 +73,12 @@ func (engine *Engine) Loop() { engine.State.ActiveRooms += 1 } else { engine.State.ClosedRooms += 1 + delete(engine.rooms.m, rid) } pm.RUnlock() } - engine.rooms.RUnlock() + engine.rooms.Unlock() time.Sleep(engineStateLoopPeriod) } }