From 8702f55cf564bea92536f25cbc6622be3e764550 Mon Sep 17 00:00:00 2001 From: timedout Date: Mon, 23 Feb 2026 17:22:37 +0000 Subject: [PATCH] fix: Don't panic if nobody's listening --- src/api/server/send.rs | 6 +++--- src/service/transaction_ids/mod.rs | 7 ++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/api/server/send.rs b/src/api/server/send.rs index 3b42c89e..7d162f0d 100644 --- a/src/api/server/send.rs +++ b/src/api/server/send.rs @@ -214,9 +214,9 @@ fn fail_federation_txn( services.transaction_ids.remove_federation_txn(txn_key); // Send the error to any waiters - sender - .send(Some(Err(err))) - .expect("couldn't send error to channel"); + if let Err(e) = sender.send(Some(Err(err))) { + debug_warn!("Failed to send transaction error to receivers: {e}"); + } } /// Converts a TransactionError into an appropriate HTTP error response. diff --git a/src/service/transaction_ids/mod.rs b/src/service/transaction_ids/mod.rs index bdef1a6b..b64555af 100644 --- a/src/service/transaction_ids/mod.rs +++ b/src/service/transaction_ids/mod.rs @@ -11,6 +11,7 @@ use std::{ use async_trait::async_trait; use conduwuit::{Error, Result, SyncRwLock, debug_warn, warn}; use database::{Handle, Map}; +use futures::SinkExt; use ruma::{ DeviceId, OwnedServerName, OwnedTransactionId, TransactionId, UserId, api::{ @@ -239,9 +240,9 @@ impl Service { }), ); - sender - .send(Some(Ok(response))) - .expect("couldn't send response to channel"); + if let Err(e) = sender.send(Some(Ok(response))) { + debug_warn!("Failed to send transaction response to waiting receivers: {e}"); + } // explicitly close drop(sender);