From cc7cd51e9c81f3b2f9061f151ead77d2fd1ed618 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Mon, 15 Apr 2024 03:56:20 -0700 Subject: [PATCH] prevent empty transactions from going out Signed-off-by: Jason Volk --- src/service/sending/mod.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/service/sending/mod.rs b/src/service/sending/mod.rs index b670b54f..fb9c34cd 100644 --- a/src/service/sending/mod.rs +++ b/src/service/sending/mod.rs @@ -350,7 +350,9 @@ impl Service { vec![(event, key)], &mut current_transaction_status, ) { - futures.push(handle_events(outgoing_kind, events)); + if !events.is_empty() { + futures.push(handle_events(outgoing_kind, events)); + } } } } @@ -598,6 +600,7 @@ pub fn select_edus_receipts( async fn handle_events( kind: OutgoingKind, events: Vec, ) -> Result { + debug_assert!(!events.is_empty(), "sending empty transaction"); match kind { OutgoingKind::Appservice(ref id) => handle_events_kind_appservice(&kind, id, events).await, OutgoingKind::Push(ref userid, ref pushkey) => handle_events_kind_push(&kind, userid, pushkey, events).await, @@ -638,6 +641,7 @@ async fn handle_events_kind_appservice( let permit = services().sending.maximum_requests.acquire().await; + debug_assert!(!pdu_jsons.is_empty(), "sending empty transaction"); let response = match appservice::send_request( services() .appservice @@ -792,6 +796,7 @@ async fn handle_events_kind_normal( let permit = services().sending.maximum_requests.acquire().await; let client = &services().globals.client.sender; + debug_assert!(pdu_jsons.len() + edu_jsons.len() > 0, "sending empty transaction"); let response = send::send_request( client, dest,