rust/hedgewars-server/src/handlers/common.rs
changeset 16001 8ba2b5007c29
parent 16000 d9f1b239b6d7
child 16002 e915ed28726e
--- a/rust/hedgewars-server/src/handlers/common.rs	Mon Mar 25 16:05:11 2024 +0300
+++ b/rust/hedgewars-server/src/handlers/common.rs	Wed Mar 27 02:19:44 2024 +0300
@@ -106,6 +106,7 @@
 
 pub fn get_room_join_data<'a, I: Iterator<Item = &'a HwClient> + Clone>(
     client: &HwClient,
+    master: Option<&HwClient>,
     room: &HwRoom,
     room_clients: I,
     response: &mut Response,
@@ -234,6 +235,8 @@
 
         get_room_config_impl(room.config(), Destination::ToSelf, response);
     }
+
+    get_room_update(None, room, master, response);
 }
 
 pub fn get_room_join_error(error: JoinRoomError, response: &mut Response) {
@@ -331,8 +334,10 @@
 
             get_remove_teams_data(room.id, was_in_game, removed_teams, response);
 
+            let master = new_master.or(Some(client.id)).map(|id| server.client(id));
+
             response.add(
-                RoomUpdated(room.name.clone(), room.info(Some(&client)))
+                RoomUpdated(room.name.clone(), room.info(master))
                     .send_all()
                     .with_protocol(room.protocol_number),
             );
@@ -359,12 +364,12 @@
 }
 
 pub fn get_room_update(
-    room_name: Option<String>,
+    old_name: Option<String>,
     room: &HwRoom,
     master: Option<&HwClient>,
     response: &mut Response,
 ) {
-    let update_msg = RoomUpdated(room_name.unwrap_or(room.name.clone()), room.info(master));
+    let update_msg = RoomUpdated(old_name.unwrap_or(room.name.clone()), room.info(master));
     response.add(update_msg.send_all().with_protocol(room.protocol_number));
 }