aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-07-11 14:58:03 +0200
committermetamuffin <metamuffin@disroot.org>2024-07-11 14:58:03 +0200
commit30ab7b2b0bf4ab030184987937c15cf6ff0a6777 (patch)
tree671149309dd03d7204d9e65d44b6f9145e72e04a
parentc94bbfe317ebcec042f2e6e7a16f6dda068db9a2 (diff)
downloadhurrycurry-30ab7b2b0bf4ab030184987937c15cf6ff0a6777.tar
hurrycurry-30ab7b2b0bf4ab030184987937c15cf6ff0a6777.tar.bz2
hurrycurry-30ab7b2b0bf4ab030184987937c15cf6ff0a6777.tar.zst
abort recording if packet is invalid
-rw-r--r--server/replaytool/src/main.rs10
1 files changed, 2 insertions, 8 deletions
diff --git a/server/replaytool/src/main.rs b/server/replaytool/src/main.rs
index f92ac90a..b591bf92 100644
--- a/server/replaytool/src/main.rs
+++ b/server/replaytool/src/main.rs
@@ -15,7 +15,7 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-use anyhow::anyhow;
+use anyhow::{anyhow, Context};
use async_compression::tokio::{bufread::ZstdDecoder, write::ZstdEncoder};
use clap::Parser;
use futures_util::{SinkExt, StreamExt};
@@ -179,13 +179,7 @@ pub async fn do_record(output: &Path, url: &str) -> anyhow::Result<()> {
while let Some(Ok(message)) = sock.next().await {
match message {
Message::Text(line) => {
- let packet: PacketC = match serde_json::from_str(&line) {
- Ok(p) => p,
- Err(e) => {
- warn!("invalid packet: {e}");
- break;
- }
- };
+ let packet: PacketC = serde_json::from_str(&line).context("invalid packet")?;
debug!("<- {packet:?}");
let is_end = matches!(packet, PacketC::SetIngame { state: false, .. });