From 789589ef3734c735bfeb2f7830c0c9c7f2a92cf3 Mon Sep 17 00:00:00 2001 From: timedout Date: Sun, 12 Jul 2026 17:30:05 +0100 Subject: [PATCH] chore: Remove redundant client IP extractions on individual routes --- src/api/client/account/mod.rs | 9 ++---- src/api/client/account/register.rs | 4 +-- src/api/client/dehydrated_device.rs | 12 +++----- src/api/client/device.rs | 4 +-- src/api/client/directory.rs | 9 ++---- src/api/client/media.rs | 35 ---------------------- src/api/client/media_legacy.rs | 24 ++++----------- src/api/client/membership/invite.rs | 13 ++------- src/api/client/membership/join.rs | 29 +++++-------------- src/api/client/membership/knock.rs | 14 ++------- src/api/client/membership/mod.rs | 7 ++--- src/api/client/message.rs | 2 +- src/api/client/read_marker.rs | 2 +- src/api/client/redact.rs | 2 +- src/api/client/report.rs | 9 ++---- src/api/client/room/summary.rs | 3 +- src/api/client/send.rs | 2 +- src/api/client/session.rs | 16 ++++------ src/api/client/state.rs | 4 +-- src/api/client/sync/v3/mod.rs | 2 +- src/api/client/sync/v5.rs | 2 +- src/api/client/typing.rs | 2 +- src/api/server/invite.rs | 3 +- src/api/server/media.rs | 16 ++-------- src/api/server/publicrooms.rs | 6 ++-- src/api/server/send.rs | 45 +++++++++-------------------- 26 files changed, 71 insertions(+), 205 deletions(-) diff --git a/src/api/client/account/mod.rs b/src/api/client/account/mod.rs index 51060ec7d..bcd8768cd 100644 --- a/src/api/client/account/mod.rs +++ b/src/api/client/account/mod.rs @@ -42,10 +42,9 @@ pub(crate) mod threepid; /// /// Note: This will not reserve the username, so the username might become /// invalid when trying to register -#[tracing::instrument(skip_all, fields(%client), name = "register_available", level = "info")] +#[tracing::instrument(skip_all, name = "register_available", level = "info")] pub(crate) async fn get_register_available_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let _ = services @@ -79,10 +78,9 @@ pub(crate) async fn get_register_available_route( /// last seen ts) /// - Forgets to-device events /// - Triggers device list updates -#[tracing::instrument(skip_all, fields(%client), name = "change_password", level = "info")] +#[tracing::instrument(skip_all, name = "change_password", level = "info")] pub(crate) async fn change_password_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let identity = if let Some(identity) = body.identity.as_ref() { @@ -247,10 +245,9 @@ pub(crate) async fn whoami_route( /// - Forgets all to-device events /// - Triggers device list updates /// - Removes ability to log in again -#[tracing::instrument(skip_all, fields(%client), name = "deactivate", level = "info")] +#[tracing::instrument(skip_all, name = "deactivate", level = "info")] pub(crate) async fn deactivate_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { // Authentication for this endpoint is technically optional, diff --git a/src/api/client/account/register.rs b/src/api/client/account/register.rs index 3317cbc08..df5ee04db 100644 --- a/src/api/client/account/register.rs +++ b/src/api/client/account/register.rs @@ -35,10 +35,10 @@ use crate::{Ruma, client_ip::ClientIp}; /// /_matrix/client/v3/register/available`](fn.get_register_available_route. /// html) to check if the user id is valid and available. #[allow(clippy::doc_markdown)] -#[tracing::instrument(skip_all, fields(%client), name = "register", level = "info")] +#[tracing::instrument(skip_all, name = "register", level = "info")] pub(crate) async fn register_route( State(services): State, - ClientIp(client): ClientIp, + ClientIp(client): ClientIp, // NOTE: Required for metadata. body: Ruma, ) -> Result { if body.kind != RegistrationKind::User { diff --git a/src/api/client/dehydrated_device.rs b/src/api/client/dehydrated_device.rs index ec6648bc5..2b78bd180 100644 --- a/src/api/client/dehydrated_device.rs +++ b/src/api/client/dehydrated_device.rs @@ -18,10 +18,9 @@ const MAX_BATCH_EVENTS: usize = 50; /// # `PUT /_matrix/client/../dehydrated_device` /// /// Creates or overwrites the user's dehydrated device. -#[tracing::instrument(skip_all, fields(%client))] +#[tracing::instrument(skip_all)] pub(crate) async fn put_dehydrated_device_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let device_id = body.device_id.clone(); @@ -37,10 +36,9 @@ pub(crate) async fn put_dehydrated_device_route( /// # `DELETE /_matrix/client/../dehydrated_device` /// /// Deletes the user's dehydrated device without replacement. -#[tracing::instrument(skip_all, fields(%client))] +#[tracing::instrument(skip_all)] pub(crate) async fn delete_dehydrated_device_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; @@ -55,10 +53,9 @@ pub(crate) async fn delete_dehydrated_device_route( /// # `GET /_matrix/client/../dehydrated_device` /// /// Gets the user's dehydrated device -#[tracing::instrument(skip_all, fields(%client))] +#[tracing::instrument(skip_all)] pub(crate) async fn get_dehydrated_device_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; @@ -71,10 +68,9 @@ pub(crate) async fn get_dehydrated_device_route( /// # `GET /_matrix/client/../dehydrated_device/{device_id}/events` /// /// Paginates the events of the dehydrated device. -#[tracing::instrument(skip_all, fields(%client))] +#[tracing::instrument(skip_all)] pub(crate) async fn get_dehydrated_events_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; diff --git a/src/api/client/device.rs b/src/api/client/device.rs index bf9111576..9002c980c 100644 --- a/src/api/client/device.rs +++ b/src/api/client/device.rs @@ -45,10 +45,10 @@ pub(crate) async fn get_device_route( /// # `PUT /_matrix/client/r0/devices/{deviceId}` /// /// Updates the metadata on a given device of the sender user. -#[tracing::instrument(skip_all, fields(%client), name = "update_device", level = "debug")] +#[tracing::instrument(skip_all, name = "update_device", level = "debug")] pub(crate) async fn update_device_route( State(services): State, - ClientIp(client): ClientIp, + ClientIp(client): ClientIp, // NOTE: Required for updating device metadata body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; diff --git a/src/api/client/directory.rs b/src/api/client/directory.rs index 789e067be..f19b16a44 100644 --- a/src/api/client/directory.rs +++ b/src/api/client/directory.rs @@ -34,10 +34,9 @@ use crate::{Ruma, client_ip::ClientIp}; /// Lists the public rooms on this server. /// /// - Rooms are ordered by the number of joined members -#[tracing::instrument(skip_all, fields(%client), name = "publicrooms", level = "info")] +#[tracing::instrument(skip_all, name = "publicrooms", level = "info")] pub(crate) async fn get_public_rooms_filtered_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { if let Some(server) = &body.server { @@ -70,10 +69,9 @@ pub(crate) async fn get_public_rooms_filtered_route( /// Lists the public rooms on this server. /// /// - Rooms are ordered by the number of joined members -#[tracing::instrument(skip_all, fields(%client), name = "publicrooms", level = "info")] +#[tracing::instrument(skip_all, name = "publicrooms", level = "info")] pub(crate) async fn get_public_rooms_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { if let Some(server) = &body.server { @@ -105,10 +103,9 @@ pub(crate) async fn get_public_rooms_route( /// # `PUT /_matrix/client/r0/directory/list/room/{roomId}` /// /// Sets the visibility of a given room in the room directory. -#[tracing::instrument(skip_all, fields(%client), name = "room_directory", level = "info")] +#[tracing::instrument(skip_all, name = "room_directory", level = "info")] pub(crate) async fn set_room_visibility_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; diff --git a/src/api/client/media.rs b/src/api/client/media.rs index 6b6e46949..2b41b765c 100644 --- a/src/api/client/media.rs +++ b/src/api/client/media.rs @@ -41,15 +41,8 @@ pub(crate) async fn get_media_config_route( /// /// - Some metadata will be saved in the database /// - Media will be saved in the media/ directory -#[tracing::instrument( - name = "media_upload", - level = "debug", - skip_all, - fields(%client), -)] pub(crate) async fn create_content_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let user = body.identity.expect_sender_user()?; @@ -80,15 +73,8 @@ pub(crate) async fn create_content_route( /// # `GET /_matrix/client/v1/media/thumbnail/{serverName}/{mediaId}` /// /// Load media thumbnail from our server or over federation. -#[tracing::instrument( - name = "media_thumbnail_get", - level = "debug", - skip_all, - fields(%client), -)] pub(crate) async fn get_content_thumbnail_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let user = body.identity.expect_sender_user()?; @@ -130,15 +116,8 @@ pub(crate) async fn get_content_thumbnail_route( /// # `GET /_matrix/client/v1/media/download/{serverName}/{mediaId}` /// /// Load media from our server or over federation. -#[tracing::instrument( - name = "media_get", - level = "debug", - skip_all, - fields(%client), -)] pub(crate) async fn get_content_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let user = body.identity.expect_sender_user()?; @@ -177,15 +156,8 @@ pub(crate) async fn get_content_route( /// # `GET /_matrix/client/v1/media/download/{serverName}/{mediaId}/{fileName}` /// /// Load media from our server or over federation as fileName. -#[tracing::instrument( - name = "media_get_af", - level = "debug", - skip_all, - fields(%client), -)] pub(crate) async fn get_content_as_filename_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let user = body.identity.expect_sender_user()?; @@ -228,15 +200,8 @@ pub(crate) async fn get_content_as_filename_route( /// # `GET /_matrix/client/v1/media/preview_url` /// /// Returns URL preview. -#[tracing::instrument( - name = "url_preview", - level = "debug", - skip_all, - fields(%client), -)] pub(crate) async fn get_media_preview_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; diff --git a/src/api/client/media_legacy.rs b/src/api/client/media_legacy.rs index 73a8ded37..3ddea19b7 100644 --- a/src/api/client/media_legacy.rs +++ b/src/api/client/media_legacy.rs @@ -49,10 +49,8 @@ pub(crate) async fn get_media_config_legacy_legacy_route( /// # `GET /_matrix/media/v3/preview_url` /// /// Returns URL preview. -#[tracing::instrument(skip_all, fields(%client), name = "url_preview_legacy", level = "debug")] pub(crate) async fn get_media_preview_legacy_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; @@ -94,10 +92,9 @@ pub(crate) async fn get_media_preview_legacy_route( /// Returns URL preview. pub(crate) async fn get_media_preview_legacy_legacy_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result> { - get_media_preview_legacy_route(State(services), ClientIp(client), body) + get_media_preview_legacy_route(State(services), body) .await .map(RumaResponse) } @@ -114,10 +111,9 @@ pub(crate) async fn get_media_preview_legacy_legacy_route( /// - Media will be saved in the media/ directory pub(crate) async fn create_content_legacy_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result> { - create_content_route(State(services), ClientIp(client), body) + create_content_route(State(services), body) .await .map(RumaResponse) } @@ -130,10 +126,8 @@ pub(crate) async fn create_content_legacy_route( /// - Only redirects if `allow_redirect` is true /// - Uses client-provided `timeout_ms` if available, else defaults to 20 /// seconds -#[tracing::instrument(skip_all, fields(%client), name = "media_get_legacy", level = "debug")] pub(crate) async fn get_content_legacy_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let mxc = Mxc { @@ -208,13 +202,11 @@ pub(crate) async fn get_content_legacy_route( /// - Only redirects if `allow_redirect` is true /// - Uses client-provided `timeout_ms` if available, else defaults to 20 /// seconds -#[tracing::instrument(skip_all, fields(%client), name = "media_get_legacy", level = "debug")] pub(crate) async fn get_content_legacy_legacy_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result> { - get_content_legacy_route(State(services), ClientIp(client), body) + get_content_legacy_route(State(services), body) .await .map(RumaResponse) } @@ -227,10 +219,8 @@ pub(crate) async fn get_content_legacy_legacy_route( /// - Only redirects if `allow_redirect` is true /// - Uses client-provided `timeout_ms` if available, else defaults to 20 /// seconds -#[tracing::instrument(skip_all, fields(%client), name = "media_get_legacy", level = "debug")] pub(crate) async fn get_content_as_filename_legacy_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let mxc = Mxc { @@ -306,10 +296,9 @@ pub(crate) async fn get_content_as_filename_legacy_route( /// seconds pub(crate) async fn get_content_as_filename_legacy_legacy_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result> { - get_content_as_filename_legacy_route(State(services), ClientIp(client), body) + get_content_as_filename_legacy_route(State(services), body) .await .map(RumaResponse) } @@ -322,10 +311,8 @@ pub(crate) async fn get_content_as_filename_legacy_legacy_route( /// - Only redirects if `allow_redirect` is true /// - Uses client-provided `timeout_ms` if available, else defaults to 20 /// seconds -#[tracing::instrument(skip_all, fields(%client), name = "media_thumbnail_get_legacy", level = "debug")] pub(crate) async fn get_content_thumbnail_legacy_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let mxc = Mxc { @@ -403,10 +390,9 @@ pub(crate) async fn get_content_thumbnail_legacy_route( /// seconds pub(crate) async fn get_content_thumbnail_legacy_legacy_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result> { - get_content_thumbnail_legacy_route(State(services), ClientIp(client), body) + get_content_thumbnail_legacy_route(State(services), body) .await .map(RumaResponse) } diff --git a/src/api/client/membership/invite.rs b/src/api/client/membership/invite.rs index dd4bf62e6..c9b4ac4f7 100644 --- a/src/api/client/membership/invite.rs +++ b/src/api/client/membership/invite.rs @@ -22,10 +22,9 @@ use crate::{Ruma, client_ip::ClientIp}; /// # `POST /_matrix/client/r0/rooms/{roomId}/invite` /// /// Tries to send an invite event into the room. -#[tracing::instrument(skip_all, fields(%client), name = "invite", level = "info")] +#[tracing::instrument(skip_all, name = "invite", level = "info")] pub(crate) async fn invite_user_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; @@ -41,14 +40,8 @@ pub(crate) async fn invite_user_route( return Err!(Request(Forbidden("Invites are not allowed on this server."))); } - banned_room_check( - &services, - sender_user, - Some(&body.room_id), - body.room_id.server_name(), - client, - ) - .await?; + banned_room_check(&services, sender_user, Some(&body.room_id), body.room_id.server_name()) + .await?; match &body.recipient { | invite_user::v3::InvitationRecipient::UserId(InviteUserId { diff --git a/src/api/client/membership/join.rs b/src/api/client/membership/join.rs index 3b578b57c..70f2c46a8 100644 --- a/src/api/client/membership/join.rs +++ b/src/api/client/membership/join.rs @@ -21,10 +21,9 @@ use crate::{Ruma, client_ip::ClientIp}; /// rules locally /// - If the server does not know about the room: asks other servers over /// federation -#[tracing::instrument(skip_all, fields(%client), name = "join", level = "info")] +#[tracing::instrument(skip_all, name = "join", level = "info")] pub(crate) async fn join_room_by_id_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; @@ -32,14 +31,8 @@ pub(crate) async fn join_room_by_id_route( return Err!(Request(UserSuspended("You cannot perform this action while suspended."))); } - banned_room_check( - &services, - sender_user, - Some(&body.room_id), - body.room_id.server_name(), - client, - ) - .await?; + banned_room_check(&services, sender_user, Some(&body.room_id), body.room_id.server_name()) + .await?; // There is no body.server_name for /roomId/join let mut servers: Vec<_> = services @@ -90,10 +83,9 @@ pub(crate) async fn join_room_by_id_route( /// - If the server does not know about the room: use the server name query /// param if specified. if not specified, asks other servers over federation /// via room alias server name and room ID server name -#[tracing::instrument(skip_all, fields(%client), name = "join", level = "info")] +#[tracing::instrument(skip_all, name = "join", level = "info")] pub(crate) async fn join_room_by_id_or_alias_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; @@ -104,15 +96,9 @@ pub(crate) async fn join_room_by_id_or_alias_route( let (servers, room_id) = match OwnedRoomId::try_from(body.room_id_or_alias.clone()) { | Ok(room_id) => { - banned_room_check( - &services, - sender_user, - Some(&room_id), - room_id.server_name(), - client, - ) - .boxed() - .await?; + banned_room_check(&services, sender_user, Some(&room_id), room_id.server_name()) + .boxed() + .await?; let mut servers = body.via.clone(); if servers.is_empty() { @@ -158,7 +144,6 @@ pub(crate) async fn join_room_by_id_or_alias_route( sender_user, Some(&room_id), Some(room_alias.server_name()), - client, ) .await?; diff --git a/src/api/client/membership/knock.rs b/src/api/client/membership/knock.rs index 6bde8cbf2..b7184bb08 100644 --- a/src/api/client/membership/knock.rs +++ b/src/api/client/membership/knock.rs @@ -44,10 +44,9 @@ use crate::{Ruma, client_ip::ClientIp}; /// # `POST /_matrix/client/*/knock/{roomIdOrAlias}` /// /// Tries to knock the room to ask permission to join for the sender user. -#[tracing::instrument(skip_all, fields(%client), name = "knock", level = "info")] +#[tracing::instrument(skip_all, name = "knock", level = "info")] pub(crate) async fn knock_room_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; @@ -58,14 +57,8 @@ pub(crate) async fn knock_room_route( let (servers, room_id) = match OwnedRoomId::try_from(body.room_id_or_alias.clone()) { | Ok(room_id) => { - banned_room_check( - &services, - sender_user, - Some(&room_id), - room_id.server_name(), - client, - ) - .await?; + banned_room_check(&services, sender_user, Some(&room_id), room_id.server_name()) + .await?; let mut servers = body.via.clone(); servers.extend( @@ -108,7 +101,6 @@ pub(crate) async fn knock_room_route( sender_user, Some(&room_id), Some(room_alias.server_name()), - client, ) .await?; diff --git a/src/api/client/membership/mod.rs b/src/api/client/membership/mod.rs index 0b2ee55b3..06847ea7b 100644 --- a/src/api/client/membership/mod.rs +++ b/src/api/client/membership/mod.rs @@ -8,8 +8,6 @@ mod leave; mod members; mod unban; -use std::net::IpAddr; - use axum::extract::State; use conduwuit::{Err, Result, warn}; use futures::{FutureExt, StreamExt}; @@ -58,7 +56,6 @@ pub(crate) async fn banned_room_check( user_id: &UserId, room_id: Option<&RoomId>, server_name: Option<&ServerName>, - client_ip: IpAddr, ) -> Result { if services.users.is_admin(user_id).await { return Ok(()); @@ -85,7 +82,7 @@ pub(crate) async fn banned_room_check( .admin .send_text(&format!( "Automatically deactivating user {user_id} due to attempted banned \ - room join from IP {client_ip}" + room join" )) .await; } @@ -121,7 +118,7 @@ pub(crate) async fn banned_room_check( .admin .send_text(&format!( "Automatically deactivating user {user_id} due to attempted banned \ - room join from IP {client_ip}" + room join" )) .await; } diff --git a/src/api/client/message.rs b/src/api/client/message.rs index 30956b7d0..aa7b20888 100644 --- a/src/api/client/message.rs +++ b/src/api/client/message.rs @@ -71,7 +71,7 @@ const LIMIT_DEFAULT: usize = 10; /// where the user was joined, depending on `history_visibility`) pub(crate) async fn get_message_events_route( State(services): State, - ClientIp(client_ip): ClientIp, + ClientIp(client_ip): ClientIp, // NOTE: Required for updating device metadata body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; diff --git a/src/api/client/read_marker.rs b/src/api/client/read_marker.rs index 155892e8b..8b2f4dbc9 100644 --- a/src/api/client/read_marker.rs +++ b/src/api/client/read_marker.rs @@ -116,7 +116,7 @@ pub(crate) async fn set_read_marker_route( /// Sets private read marker and public read receipt EDU. pub(crate) async fn create_receipt_route( State(services): State, - ClientIp(client_ip): ClientIp, + ClientIp(client_ip): ClientIp, // NOTE: Required for updating device metadata body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; diff --git a/src/api/client/redact.rs b/src/api/client/redact.rs index ab976ef27..540e3c0a6 100644 --- a/src/api/client/redact.rs +++ b/src/api/client/redact.rs @@ -13,7 +13,7 @@ use crate::{Ruma, client_ip::ClientIp}; /// - TODO: Handle txn id pub(crate) async fn redact_event_route( State(services): State, - ClientIp(client_ip): ClientIp, + ClientIp(client_ip): ClientIp, // NOTE: required for updating device metadata body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; diff --git a/src/api/client/report.rs b/src/api/client/report.rs index 10748b7b9..15294ad95 100644 --- a/src/api/client/report.rs +++ b/src/api/client/report.rs @@ -29,10 +29,9 @@ const MAX_REASON_LENGTH: usize = 2000; /// # `POST /_matrix/client/v3/rooms/{roomId}/report` /// /// Reports an abusive room to homeserver admins -#[tracing::instrument(skip_all, fields(%client), name = "report_room", level = "info")] +#[tracing::instrument(skip_all, name = "report_room", level = "info")] pub(crate) async fn report_room_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; @@ -84,10 +83,9 @@ pub(crate) async fn report_room_route( /// # `POST /_matrix/client/v3/rooms/{roomId}/report/{eventId}` /// /// Reports an inappropriate event to homeserver admins -#[tracing::instrument(skip_all, fields(%client), name = "report_event", level = "info")] +#[tracing::instrument(skip_all, name = "report_event", level = "info")] pub(crate) async fn report_event_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { // user authentication @@ -128,10 +126,9 @@ pub(crate) async fn report_event_route( Ok(report_content::v3::Response::new()) } -#[tracing::instrument(skip_all, fields(%client), name = "report_user", level = "info")] +#[tracing::instrument(skip_all, name = "report_user", level = "info")] pub(crate) async fn report_user_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; diff --git a/src/api/client/room/summary.rs b/src/api/client/room/summary.rs index 3463037d7..834c362ce 100644 --- a/src/api/client/room/summary.rs +++ b/src/api/client/room/summary.rs @@ -8,10 +8,9 @@ use crate::{Ruma, client_ip::ClientIp, router::ClientIdentity}; /// # `GET /_matrix/client/v1/room_summary/{roomIdOrAlias}` /// /// Returns a short description of the state of a room. -#[tracing::instrument(skip_all, fields(%client), name = "room_summary", level = "info")] +#[tracing::instrument(skip_all, name = "room_summary", level = "info")] pub(crate) async fn get_room_summary( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let (room_id, servers) = services diff --git a/src/api/client/send.rs b/src/api/client/send.rs index 339157d70..277b6b428 100644 --- a/src/api/client/send.rs +++ b/src/api/client/send.rs @@ -18,7 +18,7 @@ use crate::{Ruma, client_ip::ClientIp}; /// allowed pub(crate) async fn send_message_event_route( State(services): State, - ClientIp(client_ip): ClientIp, + ClientIp(client_ip): ClientIp, // NOTE: required for updating device metadata body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; diff --git a/src/api/client/session.rs b/src/api/client/session.rs index 6f93e6996..bb4f77957 100644 --- a/src/api/client/session.rs +++ b/src/api/client/session.rs @@ -37,10 +37,9 @@ use crate::{Ruma, client_ip::ClientIp}; /// /// Get the supported login types of this server. One of these should be used as /// the `type` field when logging in. -#[tracing::instrument(skip_all, fields(%client), name = "login", level = "info")] +#[tracing::instrument(skip_all, name = "login", level = "info")] pub(crate) async fn get_login_types_route( State(services): State, - ClientIp(client): ClientIp, _body: Ruma, ) -> Result { if !services.config.oauth.compatibility_mode().uiaa_available() { @@ -114,10 +113,10 @@ pub async fn handle_login( /// Note: You can use [`GET /// /_matrix/client/r0/login`](fn.get_supported_versions_route.html) to see /// supported login types. -#[tracing::instrument(skip_all, fields(%client), name = "login", level = "info")] +#[tracing::instrument(skip_all, name = "login", level = "info")] pub(crate) async fn login_route( State(services): State, - ClientIp(client): ClientIp, + ClientIp(client): ClientIp, // NOTE: Required for device metadata body: Ruma, ) -> Result { if !services.config.oauth.compatibility_mode().uiaa_available() { @@ -254,10 +253,9 @@ pub(crate) async fn login_route( /// to log in with the m.login.token flow. /// /// -#[tracing::instrument(skip_all, fields(%client), name = "login_token", level = "info")] +#[tracing::instrument(skip_all, name = "login_token", level = "info")] pub(crate) async fn login_token_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { if !services.config.login_via_existing_session { @@ -290,10 +288,9 @@ pub(crate) async fn login_token_route( /// last seen ts) /// - Forgets to-device events /// - Triggers device list updates -#[tracing::instrument(skip_all, fields(%client), name = "logout", level = "info")] +#[tracing::instrument(skip_all, name = "logout", level = "info")] pub(crate) async fn logout_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; @@ -338,10 +335,9 @@ pub(crate) async fn logout_route( /// Note: This is equivalent to calling [`GET /// /_matrix/client/r0/logout`](fn.logout_route.html) from each device of this /// user. -#[tracing::instrument(skip_all, fields(%client), name = "logout", level = "info")] +#[tracing::instrument(skip_all, name = "logout", level = "info")] pub(crate) async fn logout_all_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; diff --git a/src/api/client/state.rs b/src/api/client/state.rs index 79354e1f3..7aa1d935a 100644 --- a/src/api/client/state.rs +++ b/src/api/client/state.rs @@ -34,7 +34,7 @@ use crate::{Ruma, RumaResponse, client_ip::ClientIp}; /// Sends a state event into the room. pub(crate) async fn send_state_event_for_key_route( State(services): State, - ClientIp(ip): ClientIp, + ClientIp(ip): ClientIp, // NOTE: Required for updating device metadata body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; @@ -71,7 +71,7 @@ pub(crate) async fn send_state_event_for_key_route( /// Sends a state event into the room. pub(crate) async fn send_state_event_for_empty_key_route( State(services): State, - ClientIp(ip): ClientIp, + ClientIp(ip): ClientIp, // NOTE: Required for updating device metadata body: Ruma, ) -> Result> { send_state_event_for_key_route(State(services), ClientIp(ip), body) diff --git a/src/api/client/sync/v3/mod.rs b/src/api/client/sync/v3/mod.rs index fd90d4df8..07335656e 100644 --- a/src/api/client/sync/v3/mod.rs +++ b/src/api/client/sync/v3/mod.rs @@ -181,7 +181,7 @@ type PresenceUpdates = HashMap; )] pub(crate) async fn sync_events_route( State(services): State, - ClientIp(client_ip): ClientIp, + ClientIp(client_ip): ClientIp, // NOTE: Required for updating device metadata body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; diff --git a/src/api/client/sync/v5.rs b/src/api/client/sync/v5.rs index 5887e6aee..a329a93ce 100644 --- a/src/api/client/sync/v5.rs +++ b/src/api/client/sync/v5.rs @@ -67,7 +67,7 @@ type KnownRooms = BTreeMap>; /// [MSC4186]: https://github.com/matrix-org/matrix-spec-proposals/pull/4186 pub(crate) async fn sync_events_v5_route( State(ref services): State, - ClientIp(client_ip): ClientIp, + ClientIp(client_ip): ClientIp, // NOTE: Required for updating device metadata body: Ruma, ) -> Result { let sender_user = body.identity.expect_sender_user()?; diff --git a/src/api/client/typing.rs b/src/api/client/typing.rs index 582d8d650..37d8d7ffe 100644 --- a/src/api/client/typing.rs +++ b/src/api/client/typing.rs @@ -9,7 +9,7 @@ use crate::{Ruma, client_ip::ClientIp}; /// Sets the typing state of the sender user. pub(crate) async fn create_typing_event_route( State(services): State, - ClientIp(ip): ClientIp, + ClientIp(ip): ClientIp, // NOTE: Required for updating device metadata body: Ruma, ) -> Result { use create_typing_event::v3::Typing; diff --git a/src/api/server/invite.rs b/src/api/server/invite.rs index 89fb4bf7c..bb95892f2 100644 --- a/src/api/server/invite.rs +++ b/src/api/server/invite.rs @@ -27,10 +27,9 @@ use crate::{Ruma, client_ip::ClientIp, server::utils::validate_any_membership_ev /// # `PUT /_matrix/federation/v2/invite/{roomId}/{eventId}` /// /// Invites a remote user to a room. -#[tracing::instrument(skip_all, fields(%client), name = "invite", level = "info")] +#[tracing::instrument(skip_all, name = "invite", level = "info")] pub(crate) async fn create_invite_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { if !services.server.supported_room_version(&body.room_version) { diff --git a/src/api/server/media.rs b/src/api/server/media.rs index 49df25366..8a227003e 100644 --- a/src/api/server/media.rs +++ b/src/api/server/media.rs @@ -11,15 +11,9 @@ use crate::{Ruma, client_ip::ClientIp}; /// # `GET /_matrix/federation/v1/media/download/{mediaId}` /// /// Load media from our server. -#[tracing::instrument( - name = "media_get", - level = "debug", - skip_all, - fields(%client) -)] +#[tracing::instrument(name = "media_get", level = "debug", skip_all)] pub(crate) async fn get_content_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let mxc = Mxc { @@ -53,15 +47,9 @@ pub(crate) async fn get_content_route( /// # `GET /_matrix/federation/v1/media/thumbnail/{mediaId}` /// /// Load media thumbnail from our server. -#[tracing::instrument( - name = "media_thumbnail_get", - level = "debug", - skip_all, - fields(%client) -)] +#[tracing::instrument(name = "media_thumbnail_get", level = "debug", skip_all)] pub(crate) async fn get_content_thumbnail_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { let dim = Dim::from_ruma(body.width, body.height, body.method.clone())?; diff --git a/src/api/server/publicrooms.rs b/src/api/server/publicrooms.rs index edb72fee4..813a989df 100644 --- a/src/api/server/publicrooms.rs +++ b/src/api/server/publicrooms.rs @@ -11,10 +11,9 @@ use crate::{Ruma, client_ip::ClientIp}; /// # `POST /_matrix/federation/v1/publicRooms` /// /// Lists the public rooms on this server. -#[tracing::instrument(name = "publicrooms", level = "debug", skip_all, fields(%client))] +#[tracing::instrument(name = "publicrooms", level = "debug", skip_all)] pub(crate) async fn get_public_rooms_filtered_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { if !services @@ -47,10 +46,9 @@ pub(crate) async fn get_public_rooms_filtered_route( /// # `GET /_matrix/federation/v1/publicRooms` /// /// Lists the public rooms on this server. -#[tracing::instrument(name = "publicrooms", level = "debug", skip_all, fields(%client))] +#[tracing::instrument(name = "publicrooms", level = "debug", skip_all)] pub(crate) async fn get_public_rooms_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { if !services diff --git a/src/api/server/send.rs b/src/api/server/send.rs index c9cd5b3de..7d588dd18 100644 --- a/src/api/server/send.rs +++ b/src/api/server/send.rs @@ -1,6 +1,5 @@ use std::{ collections::{BTreeMap, HashMap}, - net::IpAddr, time::{Duration, Instant}, }; @@ -56,7 +55,6 @@ type Pdu = (OwnedRoomId, OwnedEventId, CanonicalJsonObject); /// Push EDUs and PDUs to this server. pub(crate) async fn send_transaction_message_route( State(services): State, - ClientIp(client): ClientIp, body: Ruma, ) -> Result { if body.identity != body.body.origin { @@ -97,7 +95,7 @@ pub(crate) async fn send_transaction_message_route( services .server .runtime() - .spawn(process_inbound_transaction(services, body, client, txn_key, sender)); + .spawn(process_inbound_transaction(services, body, txn_key, sender)); // and wait for it wait_for_result(receiver).await }, @@ -140,7 +138,6 @@ async fn wait_for_result( async fn process_inbound_transaction( services: crate::State, body: Ruma, - client: IpAddr, txn_key: TxnKey, sender: Sender, ) { @@ -162,7 +159,7 @@ async fn process_inbound_transaction( .stream(); debug!(pdus = body.pdus.len(), edus = body.edus.len(), "Processing transaction",); - let results = match handle(&services, &client, &body.identity, pdus, edus).await { + let results = match handle(&services, &body.identity, pdus, edus).await { | Ok(results) => results, | Err(err) => { fail_federation_txn(services, &txn_key, &sender, err); @@ -235,7 +232,6 @@ fn transaction_error_to_response(err: &TransactionError) -> Error { } async fn handle( services: &Services, - client: &IpAddr, origin: &ServerName, pdus: impl Stream + Send, edus: impl Stream + Send, @@ -256,7 +252,7 @@ async fn handle( .into_iter() .try_stream() .broad_and_then(|(room_id, pdus): (_, Vec<_>)| { - handle_room(services, client, origin, room_id, pdus.into_iter()) + handle_room(services, origin, room_id, pdus.into_iter()) .map_ok(Vec::into_iter) .map_ok(IterStream::try_stream) }) @@ -266,7 +262,7 @@ async fn handle( .await?; // Evaluate EDUs after PDUs in case some of the PDUs then forbid some EDUs. - edus.for_each_concurrent(automatic_width(), |edu| handle_edu(services, client, origin, edu)) + edus.for_each_concurrent(automatic_width(), |edu| handle_edu(services, origin, edu)) .boxed() .await; @@ -275,7 +271,6 @@ async fn handle( async fn handle_room( services: &Services, - _client: &IpAddr, origin: &ServerName, room_id: OwnedRoomId, pdus: impl Iterator + Send, @@ -322,25 +317,25 @@ async fn handle_room( Ok(results) } -async fn handle_edu(services: &Services, client: &IpAddr, origin: &ServerName, edu: Edu) { +async fn handle_edu(services: &Services, origin: &ServerName, edu: Edu) { match edu { | Edu::Presence(presence) if services.server.config.allow_incoming_presence => - handle_edu_presence(services, client, origin, presence).await, + handle_edu_presence(services, origin, presence).await, | Edu::Receipt(receipt) if services.server.config.allow_incoming_read_receipts => - handle_edu_receipt(services, client, origin, receipt).await, + handle_edu_receipt(services, origin, receipt).await, | Edu::Typing(typing) if services.server.config.allow_incoming_typing => - handle_edu_typing(services, client, origin, typing).await, + handle_edu_typing(services, origin, typing).await, | Edu::DeviceListUpdate(content) => - handle_edu_device_list_update(services, client, origin, content).await, + handle_edu_device_list_update(services, origin, content).await, | Edu::DirectToDevice(content) => - handle_edu_direct_to_device(services, client, origin, content).await, + handle_edu_direct_to_device(services, origin, content).await, | Edu::SigningKeyUpdate(content) => - handle_edu_signing_key_update(services, client, origin, content).await, + handle_edu_signing_key_update(services, origin, content).await, | Edu::_Custom(ref _custom) => debug_warn!(?edu, "received custom/unknown EDU"), @@ -350,7 +345,6 @@ async fn handle_edu(services: &Services, client: &IpAddr, origin: &ServerName, e async fn handle_edu_presence( services: &Services, - _client: &IpAddr, origin: &ServerName, presence: PresenceContent, ) { @@ -391,12 +385,7 @@ async fn handle_edu_presence_update( .ok(); } -async fn handle_edu_receipt( - services: &Services, - _client: &IpAddr, - origin: &ServerName, - receipt: ReceiptContent, -) { +async fn handle_edu_receipt(services: &Services, origin: &ServerName, receipt: ReceiptContent) { receipt .receipts .into_iter() @@ -491,12 +480,7 @@ async fn handle_edu_receipt_room_user( .await; } -async fn handle_edu_typing( - services: &Services, - _client: &IpAddr, - origin: &ServerName, - typing: TypingContent, -) { +async fn handle_edu_typing(services: &Services, origin: &ServerName, typing: TypingContent) { if typing.user_id.server_name() != origin { debug_warn!( %typing.user_id, %origin, @@ -556,7 +540,6 @@ async fn handle_edu_typing( async fn handle_edu_device_list_update( services: &Services, - _client: &IpAddr, origin: &ServerName, content: DeviceListUpdateContent, ) { @@ -575,7 +558,6 @@ async fn handle_edu_device_list_update( async fn handle_edu_direct_to_device( services: &Services, - _client: &IpAddr, origin: &ServerName, content: DirectDeviceContent, ) { @@ -695,7 +677,6 @@ async fn handle_edu_direct_to_device_event( async fn handle_edu_signing_key_update( services: &Services, - _client: &IpAddr, origin: &ServerName, content: SigningKeyUpdateContent, ) {