Skip to content

Commit ed36f6e

Browse files
committed
ConnectionController::handle_connection > respond unknown site early
1 parent d275c02 commit ed36f6e

1 file changed

Lines changed: 17 additions & 3 deletions

File tree

src/controllers/connections.rs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,22 @@ impl ConnectionController {
126126
serde_json::to_value(request.req_id).unwrap()
127127
);
128128
let time = Instant::now();
129-
//TODO! Optimisation
130-
//? For Unknown Sites, send direct Error Response instead for channel roundtrip
129+
130+
//Optimisation For Unknown Sites, send direct Error Response instead for channel roundtrip
131+
#[derive(serde::Serialize, serde::Deserialize)]
132+
struct SiteRequest {
133+
site: String,
134+
}
135+
136+
if let Err(_) = request.body::<SiteRequest>() {
137+
let res = Self::unknown_site_response();
138+
let site: &str = &request.body::<SiteRequest>().unwrap_or(SiteRequest { site: "".to_string() }).site;
139+
debug!("Unknown site: {}", site);
140+
let _ = protocol.0.respond(request.req_id, res).await;
141+
let took = time.elapsed();
142+
debug!("{} Req {} took : {}", &request.cmd, &request.req_id, took);
143+
continue;
144+
}
131145
let res = req_tx.send(request.clone()).await;
132146
if res.is_err() {
133147
error!("Channel closed");
@@ -186,6 +200,7 @@ impl ConnectionController {
186200
let site = &res.site;
187201
let need = res.need;
188202
if self.sites_controller.sites.contains_key(site) {
203+
let site = self.sites_controller.sites.get_mut(site).unwrap();
189204
let mut peers = res.peers;
190205
if let Some(peers_onion) = res.peers_onion {
191206
peers.extend(peers_onion);
@@ -201,7 +216,6 @@ impl ConnectionController {
201216
pex_peers.push(peer);
202217
}
203218
}
204-
let site = self.sites_controller.sites.get_mut(site).unwrap();
205219
let keys = pex_peers
206220
.iter()
207221
.map(|p| p.address().to_string())

0 commit comments

Comments
 (0)