From a3c08a491a5d15c19fc89cdc0e838a598497034d Mon Sep 17 00:00:00 2001 From: Ginger Date: Mon, 13 Apr 2026 12:59:08 -0400 Subject: [PATCH] refactor: Fix errors in `api/server/send.rs` --- src/api/server/send.rs | 54 +++++++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/src/api/server/send.rs b/src/api/server/send.rs index a799af00e..9e628fef1 100644 --- a/src/api/server/send.rs +++ b/src/api/server/send.rs @@ -24,10 +24,10 @@ use http::StatusCode; use itertools::Itertools; use ruma::{ - CanonicalJsonObject, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, OwnedUserId, - RoomId, ServerName, UserId, + CanonicalJsonObject, EventId, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, + OwnedUserId, RoomId, ServerName, UserId, api::{ - client::error::{ErrorKind, ErrorKind::LimitExceeded}, + error::{ErrorKind, LimitExceededErrorData}, federation::transactions::{ edu::{ DeviceListUpdateContent, DirectDeviceContent, Edu, PresenceContent, @@ -116,7 +116,7 @@ async fn wait_for_result( { // Took too long, return 429 to encourage the sender to try again return Err(Error::BadRequest( - LimitExceeded { retry_after: None }, + ErrorKind::LimitExceeded(LimitExceededErrorData::new()), "Transaction is being still being processed. Please try again later.", )); } @@ -187,12 +187,12 @@ async fn process_inbound_transaction( "Finished processing transaction" ); - let response = send_transaction_message::v1::Response { - pdus: results + let response = send_transaction_message::v1::Response::new( + results .into_iter() .map(|(e, r)| (e, r.map_err(error::sanitized_message))) .collect(), - }; + ); services .transactions @@ -290,7 +290,7 @@ async fn build_local_dag( .expect("prev_events must be an array") .iter() .map(|v| { - OwnedEventId::parse(v.as_str().expect("prev_events values must be strings")) + EventId::parse(v.as_str().expect("prev_events values must be strings")) .expect("prev_events must be valid event IDs") }) .collect::>(); @@ -318,7 +318,7 @@ async fn handle_room( .rooms .event_handler .mutex_federation - .lock(&room_id) + .lock(room_id.as_str()) .await; let room_id = &room_id; @@ -514,10 +514,14 @@ async fn handle_edu_receipt_room_user( services .rooms .read_receipt - .readreceipt_update(user_id, room_id, &ReceiptEvent { - content: ReceiptEventContent(content.into()), - room_id: room_id.to_owned(), - }) + .readreceipt_update( + user_id, + room_id, + &ReceiptEvent::new( + room_id.to_owned(), + ReceiptEventContent::from_iter(content), + ), + ) .await; }) .await; @@ -616,6 +620,7 @@ async fn handle_edu_direct_to_device( ref ev_type, ref message_id, messages, + .. } = content; if sender.server_name() != origin { @@ -699,14 +704,17 @@ async fn handle_edu_direct_to_device_event( services .users .all_device_ids(target_user_id) - .for_each(|target_device_id| { - services.users.add_to_device_event( - sender, - target_user_id, - target_device_id, - ev_type, - event.clone(), - ) + .for_each(async |target_device_id| { + services + .users + .add_to_device_event( + sender, + target_user_id, + &target_device_id, + ev_type, + event.clone(), + ) + .await }) .await; }, @@ -719,7 +727,9 @@ async fn handle_edu_signing_key_update( origin: &ServerName, content: SigningKeyUpdateContent, ) { - let SigningKeyUpdateContent { user_id, master_key, self_signing_key } = content; + let SigningKeyUpdateContent { + user_id, master_key, self_signing_key, .. + } = content; if user_id.server_name() != origin { debug_warn!(