diff --git a/server/src/bridge/framing.rs b/server/src/bridge/framing.rs index 1ec3f928e..e9bbf51b7 100644 --- a/server/src/bridge/framing.rs +++ b/server/src/bridge/framing.rs @@ -4,7 +4,10 @@ use std::io::{self, Read, Write}; -/// Maximum message size: 16 MB +/// Maximum message size: 16 MB. +/// Sized for ObserverSnapshot with ~1000 entities (each ~40 bytes serialized), +/// plus generous headroom for future field additions. A full-map dump of 10k +/// entities would be ~400 KB, well within this limit. const MAX_MESSAGE_SIZE: u32 = 16 * 1024 * 1024; /// Write a length-prefixed message to a writer. diff --git a/server/src/bridge/local.rs b/server/src/bridge/local.rs index f558a135c..6669ea773 100644 --- a/server/src/bridge/local.rs +++ b/server/src/bridge/local.rs @@ -83,7 +83,7 @@ impl SimBridge for LocalBridge { fn send_snapshot(&self, snapshot: &ObserverSnapshot) -> Result<(), BridgeError> { let payload = rmp_serde::to_vec(snapshot)?; - let mut writer = self.writer.lock().unwrap(); + let mut writer = self.writer.lock().expect("writer mutex poisoned"); write_framed(writer.get_mut(), &payload)?; tracing::trace!("sent snapshot: tick={}", snapshot.tick); @@ -91,7 +91,7 @@ impl SimBridge for LocalBridge { } fn receive_inputs(&self) -> Result, BridgeError> { - let mut reader = self.reader.lock().unwrap(); + let mut reader = self.reader.lock().expect("reader mutex poisoned"); match read_framed(reader.get_mut())? { Some(payload) => {