From b6414dd1044e1f5289763294484b0cfd1e64ab70 Mon Sep 17 00:00:00 2001 From: Eana Hufwe <eana@1a23.com> Date: Sun, 26 May 2024 16:38:04 +0000 Subject: [PATCH] fix: add space paddings to the end of JSON payload to prevent `esm` from padding null bytes --- packages/backend-rs/src/service/push_notification.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/backend-rs/src/service/push_notification.rs b/packages/backend-rs/src/service/push_notification.rs index 779c382f5d..8c4342feca 100644 --- a/packages/backend-rs/src/service/push_notification.rs +++ b/packages/backend-rs/src/service/push_notification.rs @@ -127,7 +127,14 @@ async fn encode_mastodon_payload( serde_json::to_value(token.token)?, ); - Ok(serde_json::to_string(&content)?) + let res = serde_json::to_string(&content)?; + + // Adding space paddings to the end of JSON payload to prevent + // `esm` from adding null bytes payload which many Mastodon clients don’t support. + // https://firefish.dev/firefish/firefish/-/merge_requests/10905#note_6733 + let padded_length = 126 + (res.len() + 1) / 128 * 128; + + Ok(format!("{:padded_length$}", res)) } async fn handle_web_push_failure(