From 574471fbfb7797c822a3cdedc8f7d91ff075f4d1 Mon Sep 17 00:00:00 2001 From: Adam <24621027+adoyle0@users.noreply.github.com> Date: Wed, 28 Aug 2024 18:13:02 -0400 Subject: [PATCH] prevent crash when submitting empty judge request --- server/src/game.rs | 12 +++++------- server/src/message_handler.rs | 14 +++++++++----- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/server/src/game.rs b/server/src/game.rs index 3363d71..e1d0387 100644 --- a/server/src/game.rs +++ b/server/src/game.rs @@ -142,13 +142,11 @@ impl Game { pub fn judge_round(&mut self, request: JudgeDecisionRequest, player_user_id: String) { // Check if player is czar if self.czar.read().unwrap().uuid.to_string() == player_user_id { - let winner_id = self - .judge_pile_meta - .get(&request.winning_cards) - .unwrap() - .clone(); - - self.end_round(winner_id) + if let Some(winner_id) = self.judge_pile_meta.get(&request.winning_cards) { + self.end_round(winner_id.to_string()) + } else { + tracing::error!("Attempted to look up nonexistent cards for judging!"); + } } else { tracing::error!("Player is not czar!"); } diff --git a/server/src/message_handler.rs b/server/src/message_handler.rs index aa1bd51..d2460d0 100644 --- a/server/src/message_handler.rs +++ b/server/src/message_handler.rs @@ -80,11 +80,15 @@ impl MessageHandler { _judge_decision if let Ok(judge_request) = from_str::(&text) => { - self.state - .games_tx - .send(JudgeDecision(judge_request, addr)) - .await - .unwrap(); + if !judge_request.winning_cards.is_empty() { + self.state + .games_tx + .send(JudgeDecision(judge_request, addr)) + .await + .unwrap(); + } else { + tracing::debug!("Judge request received with empty cards"); + } } _delete_game if let Ok(delete_request) = from_str::(&text) => {