diff --git a/src/service/federation/execute.rs b/src/service/federation/execute.rs index 6d3e658f..225e1250 100644 --- a/src/service/federation/execute.rs +++ b/src/service/federation/execute.rs @@ -104,8 +104,9 @@ where debug!(?method, ?url, "Sending request"); match client.execute(request).await { | Ok(response) => handle_response::(dest, actual, &method, &url, response).await, - | Err(error) => - Err(handle_error(actual, &method, &url, error).expect_err("always returns error")), + | Err(error) => Err(self + .handle_error(dest, actual, &method, &url, error) + .expect_err("always returns error")), } } @@ -198,7 +199,10 @@ async fn into_http_response( Ok(http_response) } +#[implement(super::Service)] fn handle_error( + &self, + dest: &ServerName, actual: &ActualDest, method: &Method, url: &Url, @@ -220,6 +224,9 @@ fn handle_error( debug_error!("{e:?}"); } + self.services.resolver.cache.del_destination(dest); + self.services.resolver.cache.del_override(dest); + Err(e.into()) }