From 7977bce8a3e38f52f983f77b031b42b7afc805a0 Mon Sep 17 00:00:00 2001 From: Sergey Stepanov Date: Wed, 18 Oct 2023 21:28:37 +0300 Subject: [PATCH] Fix dangling rooms when multiplaying --- pkg/worker/coordinatorhandlers.go | 4 ++-- pkg/worker/room/room.go | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/worker/coordinatorhandlers.go b/pkg/worker/coordinatorhandlers.go index f061f159..9fee6460 100644 --- a/pkg/worker/coordinatorhandlers.go +++ b/pkg/worker/coordinatorhandlers.go @@ -162,8 +162,8 @@ func (c *coordinator) HandleGameStart(rq api.StartGameRequest[com.Uid], w *Worke func (c *coordinator) HandleTerminateSession(rq api.TerminateSessionRequest[com.Uid], w *Worker) { if user := w.router.FindUser(rq.Id); user != nil { w.router.Remove(user) + c.log.Debug().Msgf(">>> users: %v", w.router.Users()) user.Disconnect() - w.router.SetRoom(nil) } } @@ -171,7 +171,7 @@ func (c *coordinator) HandleTerminateSession(rq api.TerminateSessionRequest[com. func (c *coordinator) HandleQuitGame(rq api.GameQuitRequest[com.Uid], w *Worker) { if user := w.router.FindUser(rq.Id); user != nil { w.router.Remove(user) - w.router.SetRoom(nil) + c.log.Debug().Msgf(">>> users: %v", w.router.Users()) } } diff --git a/pkg/worker/room/room.go b/pkg/worker/room/room.go index 67ac6960..51978532 100644 --- a/pkg/worker/room/room.go +++ b/pkg/worker/room/room.go @@ -119,6 +119,7 @@ func (r *Router[T]) FindRoom(id string) *Room[T] { func (r *Router[T]) Remove(user T) { if left := r.users.RemoveL(user); left == 0 { r.Close() + r.SetRoom(nil) } }