@@ -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