diff --git a/src/api/server_server.rs b/src/api/server_server.rs index 8065ac70..9030bf99 100644 --- a/src/api/server_server.rs +++ b/src/api/server_server.rs @@ -134,11 +134,24 @@ impl FedDest { } } -#[tracing::instrument(skip(request, log_error), fields(url))] +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub(crate) enum LogRequestError { + Yes, + No, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub(crate) enum AllowLoopbackRequests { + Yes, + No, +} + +#[tracing::instrument(skip(request, log_error, allow_loopback), fields(url))] pub(crate) async fn send_request( destination: &ServerName, request: T, - log_error: bool, + log_error: LogRequestError, + allow_loopback: AllowLoopbackRequests, ) -> Result where T: OutgoingRequest + Debug, @@ -147,7 +160,9 @@ where return Err(Error::BadConfig("Federation is disabled.")); } - if destination == services().globals.server_name() { + if destination == services().globals.server_name() + && allow_loopback == AllowLoopbackRequests::No + { return Err(Error::bad_config( "Won't send federation request to ourselves", )); @@ -273,7 +288,7 @@ where services().globals.federation_client().execute(reqwest_request).await; let mut response = response.inspect_err(|error| { - if log_error { + if log_error == LogRequestError::Yes { warn!(%error, "Could not send request"); } })?; diff --git a/src/service/sending.rs b/src/service/sending.rs index c486701e..2e3fcc5a 100644 --- a/src/service/sending.rs +++ b/src/service/sending.rs @@ -41,7 +41,10 @@ use tracing::{debug, error, warn, Span}; use super::rooms::timeline::PduId; use crate::{ - api::{appservice_server, server_server}, + api::{ + appservice_server, + server_server::{self, AllowLoopbackRequests, LogRequestError}, + }, services, utils::{calculate_hash, debug_slice_truncated}, Config, Error, PduEvent, Result, @@ -677,7 +680,12 @@ impl Service { debug!("Got permit"); let response = tokio::time::timeout( Duration::from_secs(2 * 60), - server_server::send_request(destination, request, true), + server_server::send_request( + destination, + request, + LogRequestError::Yes, + AllowLoopbackRequests::No, + ), ) .await .map_err(|_| { @@ -901,7 +909,8 @@ async fn handle_federation_event( }))) .into(), }, - false, + LogRequestError::No, + AllowLoopbackRequests::No, ) .await?;