From b418319e016d2970aeb98968bf6f482c9a0996b4 Mon Sep 17 00:00:00 2001 From: CosminPerRam Date: Wed, 6 Sep 2023 14:17:37 +0300 Subject: [PATCH] [Protocol] GameSpy 3: Removed instance on unchecked .unwrap --- src/protocols/gamespy/protocols/three/protocol.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/protocols/gamespy/protocols/three/protocol.rs b/src/protocols/gamespy/protocols/three/protocol.rs index d6f534b..6d9d194 100644 --- a/src/protocols/gamespy/protocols/three/protocol.rs +++ b/src/protocols/gamespy/protocols/three/protocol.rs @@ -136,9 +136,9 @@ impl GameSpy3 { let mut values: Vec> = Vec::new(); - let mut expected_number_of_packets: Option = None; + let mut reached_expected_packets_size = false; - while expected_number_of_packets.is_none() || values.len() != expected_number_of_packets.unwrap() { + while !reached_expected_packets_size { let received_data = self.receive(None, 0)?; let mut buf = Buffer::::new(&received_data); @@ -156,8 +156,8 @@ impl GameSpy3 { let packet_id = (id & 0x7f) as usize; buf.move_cursor(1)?; //unknown byte regarding packet no. - if is_last { - expected_number_of_packets = Some(packet_id + 1); + if is_last && packet_id + 1 != values.len() { + reached_expected_packets_size = true; } while values.len() <= packet_id { @@ -270,7 +270,7 @@ fn parse_players_and_teams(packets: Vec>) -> GDResult<(Vec, Vec< data.push(HashMap::new()); } - let entry_data = data.get_mut(offset).unwrap(); + let entry_data = data.get_mut(offset).ok_or(PacketBad)?; entry_data.insert(field_name.to_string(), item); offset += 1;