Skip to content

Commit 79de433

Browse files
authored
fix(core): isolation pattern breaks raw postMessage payload (#10841)
1 parent 5048a72 commit 79de433

2 files changed

Lines changed: 13 additions & 1 deletion

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"tauri": patch:bug
3+
---
4+
5+
Fixes IPC postMessage raw body processing when using the isolation pattern.

crates/tauri/src/ipc/protocol.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ use http::{
1717
},
1818
HeaderValue, Method, Request, StatusCode,
1919
};
20+
use mime::APPLICATION_OCTET_STREAM;
2021
use url::Url;
2122

2223
use super::{CallbackFn, InvokeResponse};
@@ -278,11 +279,17 @@ fn handle_ipc_message<R: Runtime>(request: Request<String>, manager: &AppManager
278279
serde_json::from_str::<IsolationMessage<'_>>(request.body())
279280
.map_err(Into::into)
280281
.and_then(|message| {
282+
let is_raw = message.payload.content_type() == &APPLICATION_OCTET_STREAM.to_string();
283+
let payload = crypto_keys.decrypt(message.payload)?;
281284
Ok(Message {
282285
cmd: message.cmd,
283286
callback: message.callback,
284287
error: message.error,
285-
payload: serde_json::from_slice(&crypto_keys.decrypt(message.payload)?)?,
288+
payload: if is_raw {
289+
payload.into()
290+
} else {
291+
serde_json::from_slice(&payload)?
292+
},
286293
options: message.options,
287294
invoke_key: message.invoke_key,
288295
})

0 commit comments

Comments
 (0)