From c2fdfb1b1df64d82c3a3042524c5a14b61d61363 Mon Sep 17 00:00:00 2001 From: Jacob LeCoq Date: Sat, 22 Apr 2023 10:46:10 -0500 Subject: [PATCH 1/3] Fix crash if settings are not found --- .gitignore | 3 ++- src/ui/main_menu/network_game.rs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index cbc2e3b90d..cacd0f7a80 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ book/dist .vscode trace-*.json perf.data* -callgrind.out* \ No newline at end of file +callgrind.out* +.cargo diff --git a/src/ui/main_menu/network_game.rs b/src/ui/main_menu/network_game.rs index 2ef764c014..6fb4e9260f 100644 --- a/src/ui/main_menu/network_game.rs +++ b/src/ui/main_menu/network_game.rs @@ -609,7 +609,7 @@ impl<'w, 's> WidgetSystem for MatchmakingMenu<'w, 's> { *matchmaking_server = params .storage .get::(Settings::STORAGE_KEY) - .unwrap() + .unwrap_or_else(|| params.game.default_settings.clone()) .matchmaking_server; } From 34a1a70fe5bcb3da5f79a42ce7886781ba2a2958 Mon Sep 17 00:00:00 2001 From: Jacob LeCoq Date: Sat, 22 Apr 2023 10:46:30 -0500 Subject: [PATCH 2/3] Fix error on disconnect if connection is already closed --- src/ui/main_menu/network_game.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/ui/main_menu/network_game.rs b/src/ui/main_menu/network_game.rs index 6fb4e9260f..b80539d42c 100644 --- a/src/ui/main_menu/network_game.rs +++ b/src/ui/main_menu/network_game.rs @@ -734,9 +734,13 @@ impl<'w, 's> WidgetSystem for MatchmakingMenu<'w, 's> { match status { Status::Idle => (), Status::Searching => { - ONLINE_MATCHMAKER - .try_send(networking::OnlineMatchmakerRequest::StopSearch) - .unwrap(); + match ONLINE_MATCHMAKER.try_send(networking::OnlineMatchmakerRequest::StopSearch){ + Ok(_) => (), + Err(err) => { + error!("Error stopping search: {:?}", err); + } + } + *status = Status::Idle; } Status::Joining => { From fe3bed8a67685a15dfd1b05c8ea5001fa0d3aae0 Mon Sep 17 00:00:00 2001 From: Jacob LeCoq Date: Sat, 22 Apr 2023 10:51:08 -0500 Subject: [PATCH 3/3] make error handling a bit more ergonomic and less verbose --- src/ui/main_menu/network_game.rs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/ui/main_menu/network_game.rs b/src/ui/main_menu/network_game.rs index b80539d42c..71cf3c3472 100644 --- a/src/ui/main_menu/network_game.rs +++ b/src/ui/main_menu/network_game.rs @@ -734,11 +734,8 @@ impl<'w, 's> WidgetSystem for MatchmakingMenu<'w, 's> { match status { Status::Idle => (), Status::Searching => { - match ONLINE_MATCHMAKER.try_send(networking::OnlineMatchmakerRequest::StopSearch){ - Ok(_) => (), - Err(err) => { - error!("Error stopping search: {:?}", err); - } + if let Err(err) = ONLINE_MATCHMAKER.try_send(networking::OnlineMatchmakerRequest::StopSearch){ + error!("Error stopping search: {:?}", err); } *status = Status::Idle;