@@ -151,10 +151,11 @@ pub async fn run(
151151 let peers = Arc :: clone ( & peers) ;
152152 crate :: transport:: connect_loop (
153153 || {
154- let cfg = client_config. clone ( ) ;
154+ let client_config = client_config. clone ( ) ;
155155 async move {
156156 use wallhack_core:: client:: client:: Client ;
157- let mut client = wallhack_core:: client:: quic:: QuicClient :: try_new ( cfg) ?;
157+ let mut client =
158+ wallhack_core:: client:: quic:: QuicClient :: try_new ( client_config) ?;
158159 client. connect ( NodeRole :: Relay ) . await
159160 }
160161 } ,
@@ -206,9 +207,10 @@ pub async fn run(
206207 let peers = Arc :: clone ( & peers) ;
207208 crate :: transport:: connect_loop (
208209 || {
209- let cfg = client_config. clone ( ) ;
210+ let client_config = client_config. clone ( ) ;
210211 async move {
211- let mut client = wallhack_core:: client:: ws:: WsClient :: new ( cfg) ?;
212+ let mut client =
213+ wallhack_core:: client:: ws:: WsClient :: new ( client_config) ?;
212214 client. connect ( NodeRole :: Relay ) . await
213215 }
214216 } ,
@@ -290,9 +292,6 @@ async fn run_relay_loop_inner(
290292 . and_then ( |h| h. capabilities )
291293 . unwrap_or_default ( ) ;
292294
293- // Clone before heartbeat takes ownership — used for peer announcements.
294- let announce_tx = source_control_tx. clone ( ) ;
295-
296295 peers. register (
297296 peer_name. clone ( ) ,
298297 peer_addr. clone ( ) ,
@@ -302,7 +301,7 @@ async fn run_relay_loop_inner(
302301 ) ;
303302
304303 let _source_heartbeat = super :: spawn_heartbeat (
305- source_control_tx,
304+ source_control_tx. clone ( ) ,
306305 latency_rx,
307306 peer_name. clone ( ) ,
308307 Arc :: clone ( & peers) ,
@@ -389,7 +388,8 @@ async fn run_relay_loop_inner(
389388 // The source (entry) registers these peers for topology visibility.
390389 {
391390 let mut peer_events = peers. subscribe ( ) ;
392- let source_peer_name = peer_name. clone ( ) ;
391+ let peer_name = peer_name. clone ( ) ;
392+ let source_control_tx = source_control_tx. clone ( ) ;
393393 tokio:: spawn ( async move {
394394 use wallhack_core:: control:: peers:: PeerEvent ;
395395 use wallhack_wire:: control:: {
@@ -398,7 +398,7 @@ async fn run_relay_loop_inner(
398398
399399 loop {
400400 match peer_events. recv ( ) . await {
401- Ok ( PeerEvent :: Connected { name, addr, role } ) if name != source_peer_name => {
401+ Ok ( PeerEvent :: Connected { name, addr, role } ) if name != peer_name => {
402402 let announcement = PeerAnnouncement {
403403 event : peer_announcement:: Event :: Connected . into ( ) ,
404404 name,
@@ -409,11 +409,11 @@ async fn run_relay_loop_inner(
409409 let msg = ControlMessage {
410410 message : Some ( control_message:: Message :: PeerAnnouncement ( announcement) ) ,
411411 } ;
412- if announce_tx . send ( msg) . await . is_err ( ) {
412+ if source_control_tx . send ( msg) . await . is_err ( ) {
413413 break ;
414414 }
415415 }
416- Ok ( PeerEvent :: Disconnected { name } ) if name != source_peer_name => {
416+ Ok ( PeerEvent :: Disconnected { name } ) if name != peer_name => {
417417 let announcement = PeerAnnouncement {
418418 event : peer_announcement:: Event :: Disconnected . into ( ) ,
419419 name,
@@ -424,7 +424,7 @@ async fn run_relay_loop_inner(
424424 let msg = ControlMessage {
425425 message : Some ( control_message:: Message :: PeerAnnouncement ( announcement) ) ,
426426 } ;
427- if announce_tx . send ( msg) . await . is_err ( ) {
427+ if source_control_tx . send ( msg) . await . is_err ( ) {
428428 break ;
429429 }
430430 }
@@ -705,9 +705,8 @@ fn handle_relay_connection(
705705 ConnectionSide :: Accept ,
706706 ) ;
707707
708- let heartbeat_control_tx = control_tx. clone ( ) ;
709708 let _accepted_heartbeat = super :: spawn_heartbeat (
710- heartbeat_control_tx ,
709+ control_tx . clone ( ) ,
711710 latency_rx,
712711 peer_name. clone ( ) ,
713712 Arc :: clone ( peers) ,
@@ -717,12 +716,12 @@ fn handle_relay_connection(
717716 // Exit peers send ExitNodeResponses which are dispatched via responses_tx.
718717 {
719718 let transport = std:: sync:: Arc :: clone ( & transport) ;
720- let instr_tx = instructions_tx. clone ( ) ;
721- let resp_tx = responses_tx. clone ( ) ;
719+ let instructions_tx = instructions_tx. clone ( ) ;
720+ let responses_tx = responses_tx. clone ( ) ;
722721 tokio:: spawn ( async move {
723722 match transport. accept_uni_erased ( ) . await {
724723 Ok ( Some ( mut recv) ) => {
725- if let Err ( e) = run_data_in ( & mut recv, & instr_tx , & resp_tx ) . await {
724+ if let Err ( e) = run_data_in ( & mut recv, & instructions_tx , & responses_tx ) . await {
726725 tracing:: debug!( "Relay peer data-in finished: {e}" ) ;
727726 }
728727 }
0 commit comments