From 7c95dc2b89fa44f4c209df00a36af7685322b1ff Mon Sep 17 00:00:00 2001 From: Alex Emmet <111742636+Alex-Emmet@users.noreply.github.com> Date: Sat, 27 Jun 2026 00:57:16 +0200 Subject: [PATCH] Update transport.rs --- wasm/src/transport.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/wasm/src/transport.rs b/wasm/src/transport.rs index 828473a..85b2010 100644 --- a/wasm/src/transport.rs +++ b/wasm/src/transport.rs @@ -40,6 +40,34 @@ enum FrameOutcome { Ended, } +/* + * Debug-log the exact bytes about to be written to the WebTransport stream. + * + * Wire layout (note the DOUBLE length prefix): + * [0..4] outer_len u32 BE - added by send_frame (= inner frame length) + * [4..8] inner_len u32 BE - added by CommunicationValue::to_bytes + * [8..10] comm_type u16 BE - e.g. Identification + * [10] flags u8 + * [11..] id/sender/receiver/signature/data, gated by `flags` + */ +fn log_frame_bytes(wire: &[u8]) { + let hex: String = wire.iter().map(|b| format!("{b:02x}")).collect::>().join(" "); + + let outer_len = wire.get(0..4).map(|b| u32::from_be_bytes([b[0], b[1], b[2], b[3]])); + let inner_len = wire.get(4..8).map(|b| u32::from_be_bytes([b[0], b[1], b[2], b[3]])); + let comm_type = wire.get(8..10).map(|b| u16::from_be_bytes([b[0], b[1]])); + let flags = wire.get(10).copied(); + + web_sys::console::log_1( + &format!( + "mtp-wasm send_frame: {len} bytes | outer_len={outer_len:?} inner_len={inner_len:?} \ + comm_type={comm_type:?} flags={flags:?}\n{hex}", + len = wire.len(), + ) + .into(), + ); +} + /* * WebTransport client transport. * @@ -119,6 +147,8 @@ impl WasmTransport { wire.extend_from_slice(&len.to_be_bytes()); wire.extend_from_slice(frame); + log_frame_bytes(&wire); + let chunk = js_sys::Uint8Array::from(&wire[..]); let write_fn = js_sys::Reflect::get(&writer_val, &JsValue::from_str("write"))