diff --git a/src/client_server/membership.rs b/src/client_server/membership.rs index 87439406..ae08af0a 100644 --- a/src/client_server/membership.rs +++ b/src/client_server/membership.rs @@ -65,14 +65,18 @@ pub async fn join_room_by_id_route( servers.insert(body.room_id.server_name().to_owned()); - join_room_by_id_helper( + let ret = join_room_by_id_helper( &db, body.sender_user.as_ref(), &body.room_id, &servers, body.third_party_signed.as_ref(), ) - .await + .await; + + db.flush().await?; + + ret } #[cfg_attr( diff --git a/src/server_server.rs b/src/server_server.rs index 306afd26..bbb2f695 100644 --- a/src/server_server.rs +++ b/src/server_server.rs @@ -774,6 +774,8 @@ pub async fn send_transaction_message_route( } } + db.flush().await?; + Ok(send_transaction_message::v1::Response { pdus: resolved_map }.into()) } @@ -2160,6 +2162,8 @@ pub async fn create_join_event_route( db.sending.send_pdu(&server, &pdu_id)?; } + db.flush().await?; + Ok(create_join_event::v2::Response { room_state: RoomState { auth_chain: auth_chain_ids @@ -2276,6 +2280,8 @@ pub async fn create_invite_route( )?; } + db.flush().await?; + Ok(create_invite::v2::Response { event: PduEvent::convert_to_outgoing_federation_event(signed_event), } @@ -2389,7 +2395,7 @@ pub fn get_profile_information_route( post("/_matrix/federation/v1/user/keys/query", data = "<body>") )] #[tracing::instrument(skip(db, body))] -pub fn get_keys_route( +pub async fn get_keys_route( db: ReadGuard, body: Ruma<get_keys::v1::Request>, ) -> ConduitResult<get_keys::v1::Response> { @@ -2404,6 +2410,8 @@ pub fn get_keys_route( &db, )?; + db.flush().await?; + Ok(get_keys::v1::Response { device_keys: result.device_keys, master_keys: result.master_keys,