# HG changeset patch # User alfadur # Date 1711574722 -10800 # Node ID 2871fc57a282b78cd24f99c5a348d35770310a0e # Parent abea7f16a03b348e85fc421b2c9f19cf530bcf62 fix early room deletion diff -r abea7f16a03b -r 2871fc57a282 rust/hedgewars-server/src/handlers/common.rs --- a/rust/hedgewars-server/src/handlers/common.rs Thu Mar 28 00:17:01 2024 +0300 +++ b/rust/hedgewars-server/src/handlers/common.rs Thu Mar 28 00:25:22 2024 +0300 @@ -2,6 +2,7 @@ actions::{Destination, DestinationGroup}, Response, }; +use crate::core::server::HwRoomOrServer; use crate::handlers::actions::ToPendingMessage; use crate::{ core::{ @@ -358,12 +359,14 @@ let client = server.client(client_id); let nick = client.nick.clone(); - if let Some((room_id, result)) = server - .get_room_control(client_id) - .into_room() - .map(|mut control| (control.room().id, control.leave_room())) - { - get_room_leave_result(server, server.room(room_id), &msg, result, response); + match server.get_room_control(client_id) { + HwRoomOrServer::Room(mut control) => { + let room_id = control.room().id; + let result = control.leave_room(); + let server = control.server(); + get_room_leave_result(server, server.room(room_id), &msg, result, response); + } + _ => (), } server.remove_client(client_id);