tuwunel_api/client/admin/federation/
reset_connection.rs1use axum::extract::State;
2use synapse_admin_api::federation::reset_connection::v1::{Request, Response};
3use tuwunel_core::{Err, Result};
4
5use crate::{Ruma, client::admin::require_admin};
6
7pub(crate) async fn admin_reset_connection_route(
9 State(services): State<crate::State>,
10 body: Ruma<Request>,
11) -> Result<Response> {
12 require_admin(&services, body.sender_user()).await?;
13
14 let destination = &body.destination;
15
16 if services.globals.server_is_ours(destination) {
17 return Err!(Request(NotFound("Unknown destination")));
18 }
19
20 if services
21 .sending
22 .notify_peer_alive(destination)
23 .await
24 {
25 return Ok(Response {});
26 }
27
28 let known = services
29 .state_cache
30 .server_shares_room(destination)
31 .await;
32
33 if known {
34 return Err!(Request(Unknown(
35 "The retry timing does not need to be reset for this destination."
36 )));
37 }
38
39 Err!(Request(NotFound("Unknown destination")))
40}