Skip to content

Commit 1e3c21b

Browse files
maxholmanclaude
andcommitted
style: shadow all remaining non-shadowed clone bindings
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 3db6e6a commit 1e3c21b

8 files changed

Lines changed: 69 additions & 65 deletions

File tree

crates/core/src/control/peers.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -160,11 +160,9 @@ impl Registry {
160160
// control channel closed and clean up.
161161
self.unregister(&id);
162162
}
163-
let peer_id = id.clone();
164-
165163
let info = PeerInfo {
166-
id: peer_id.clone(),
167-
name: id,
164+
id: id.clone(),
165+
name: id.clone(),
168166
addr,
169167
role,
170168
capabilities,
@@ -182,18 +180,20 @@ impl Registry {
182180
};
183181
let event_addr = info.addr.clone();
184182
let event_role = info.role;
185-
let return_id = peer_id.clone();
186-
self.peers.rcu(move |old| {
187-
let mut new = (**old).clone();
188-
new.insert(peer_id.clone(), info.clone());
189-
new
190-
});
183+
{
184+
let id = id.clone();
185+
self.peers.rcu(move |old| {
186+
let mut new = (**old).clone();
187+
new.insert(id.clone(), info.clone());
188+
new
189+
});
190+
}
191191
let _ = self.events_tx.send(PeerEvent::Connected {
192-
name: return_id.clone(),
192+
name: id.clone(),
193193
addr: event_addr,
194194
role: event_role,
195195
});
196-
(return_id, connection_id)
196+
(id, connection_id)
197197
}
198198

199199
/// Set the TUN interface name for a peer.

crates/core/src/control/routes.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,14 @@ impl RouteTable {
8181
create_time: Instant::now(),
8282
auto_managed,
8383
};
84-
let new_entry = entry.clone();
84+
let entry = entry.clone();
8585
let mut old_entry = None;
8686
self.routes.rcu(|old| {
8787
let mut new = (**old).clone();
8888
old_entry = new.insert(cidr, entry.clone());
8989
new
9090
});
91-
(old_entry, new_entry)
91+
(old_entry, entry)
9292
}
9393

9494
/// Remove a route by CIDR. Returns the removed entry if it existed.

crates/core/src/ipc.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,8 +212,8 @@ pub async fn handle_connection(
212212
});
213213

214214
// Notification forwarder task (if subscribed).
215-
let notify_tx = write_tx.clone();
216215
let notify_task = peer_events.map(|mut rx| {
216+
let write_tx = write_tx.clone();
217217
tokio::spawn(async move {
218218
loop {
219219
match rx.recv().await {
@@ -222,7 +222,7 @@ pub async fn handle_connection(
222222
let msg = DaemonMessage {
223223
message: Some(daemon_message::Message::Notification(notification)),
224224
};
225-
if notify_tx.send(msg).await.is_err() {
225+
if write_tx.send(msg).await.is_err() {
226226
break;
227227
}
228228
}
@@ -241,7 +241,7 @@ pub async fn handle_connection(
241241
},
242242
)),
243243
};
244-
if notify_tx.send(warning).await.is_err() {
244+
if write_tx.send(warning).await.is_err() {
245245
break;
246246
}
247247
}

crates/daemon/src/mode/auto.rs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -256,10 +256,11 @@ async fn run_auto_connector(
256256
let route_updates = route_updates.resubscribe();
257257
crate::transport::connect_loop(
258258
|| {
259-
let cfg = client_config.clone();
259+
let client_config = client_config.clone();
260260
async move {
261261
use wallhack_core::client::client::Client;
262-
let mut client = wallhack_core::client::quic::QuicClient::try_new(cfg)?;
262+
let mut client =
263+
wallhack_core::client::quic::QuicClient::try_new(client_config)?;
263264
client.connect(NodeRole::Indeterminate).await
264265
}
265266
},
@@ -307,9 +308,10 @@ async fn run_auto_connector(
307308
let route_updates = route_updates.resubscribe();
308309
crate::transport::connect_loop(
309310
|| {
310-
let cfg = client_config.clone();
311+
let client_config = client_config.clone();
311312
async move {
312-
let mut client = wallhack_core::client::ws::WsClient::new(cfg)?;
313+
let mut client =
314+
wallhack_core::client::ws::WsClient::new(client_config)?;
313315
client.connect(NodeRole::Indeterminate).await
314316
}
315317
},
@@ -928,7 +930,7 @@ async fn run_auto_accept_session_inner(
928930

929931
// Spawn route update listener
930932
if let Some(mut updates) = route_updates {
931-
let tun = tun_name.clone();
933+
let tun_name = tun_name.clone();
932934
let peer = if peer_hs.name.is_empty() {
933935
None
934936
} else {
@@ -938,17 +940,18 @@ async fn run_auto_accept_session_inner(
938940
tracing::info!(
939941
"Route update listener started for peer {} on tun {}",
940942
peer.as_deref().unwrap_or("<unknown>"),
941-
tun
943+
tun_name
942944
);
943945
loop {
944946
match updates.recv().await {
945947
Ok(wallhack_core::control::routes::RouteUpdate::Add(entry)) => {
946948
// REASON: peer match is a route filter; OS call error is a separate concern
947949
#[allow(clippy::collapsible_if)]
948950
if Some(entry.peer.as_str()) == peer.as_deref() {
949-
if let Err(e) =
950-
crate::netlink::add_os_route(&entry.cidr.to_string(), &tun)
951-
{
951+
if let Err(e) = crate::netlink::add_os_route(
952+
&entry.cidr.to_string(),
953+
&tun_name,
954+
) {
952955
tracing::error!("Failed to add OS route: {}", e);
953956
}
954957
}
@@ -959,7 +962,7 @@ async fn run_auto_accept_session_inner(
959962
if Some(entry.peer.as_str()) == peer.as_deref() {
960963
if let Err(e) = crate::netlink::remove_os_route(
961964
&entry.cidr.to_string(),
962-
&tun,
965+
&tun_name,
963966
) {
964967
tracing::error!("Failed to remove OS route: {}", e);
965968
}

crates/daemon/src/mode/entry.rs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -370,10 +370,11 @@ pub(crate) async fn run_entry_connect(
370370
let route_updates = res.route_updates.resubscribe();
371371
crate::transport::connect_loop(
372372
|| {
373-
let cfg = client_config.clone();
373+
let client_config = client_config.clone();
374374
async move {
375375
use wallhack_core::client::client::Client;
376-
let mut client = wallhack_core::client::quic::QuicClient::try_new(cfg)?;
376+
let mut client =
377+
wallhack_core::client::quic::QuicClient::try_new(client_config)?;
377378
client.connect(NodeRole::Entry).await
378379
}
379380
},
@@ -416,9 +417,10 @@ pub(crate) async fn run_entry_connect(
416417
let route_updates = res.route_updates.resubscribe();
417418
crate::transport::connect_loop(
418419
|| {
419-
let cfg = client_config.clone();
420+
let client_config = client_config.clone();
420421
async move {
421-
let mut client = wallhack_core::client::ws::WsClient::new(cfg)?;
422+
let mut client =
423+
wallhack_core::client::ws::WsClient::new(client_config)?;
422424
client.connect(NodeRole::Entry).await
423425
}
424426
},
@@ -597,19 +599,19 @@ pub(crate) async fn run_entry_connected_inner(
597599

598600
// Spawn route update listener
599601
if let Some(mut updates) = route_updates {
600-
let tun = name.clone();
602+
let name = name.clone();
601603
let peer = peer_name.map(std::string::ToString::to_string);
602604
tokio::spawn(async move {
603605
loop {
604606
match updates.recv().await {
605607
Ok(wallhack_core::control::routes::RouteUpdate::Add(entry)) => {
606608
if Some(entry.peer.as_str()) == peer.as_deref() {
607-
let _ = add_os_route(&entry.cidr.to_string(), &tun);
609+
let _ = add_os_route(&entry.cidr.to_string(), &name);
608610
}
609611
}
610612
Ok(wallhack_core::control::routes::RouteUpdate::Remove(entry)) => {
611613
if Some(entry.peer.as_str()) == peer.as_deref() {
612-
let _ = remove_os_route(&entry.cidr.to_string(), &tun);
614+
let _ = remove_os_route(&entry.cidr.to_string(), &name);
613615
}
614616
}
615617
Err(tokio::sync::broadcast::error::RecvError::Closed) => break,
@@ -707,7 +709,7 @@ where
707709
};
708710

709711
let conn_metrics = accept_result.metrics();
710-
let conn_sessions = sessions.clone();
712+
let sessions = sessions.clone();
711713
let peers = Arc::clone(&peers);
712714
let routes = Arc::clone(&routes);
713715
let peer_route_updates = route_updates.resubscribe();
@@ -757,7 +759,7 @@ where
757759
transport,
758760
channels,
759761
control_tx,
760-
sessions: conn_sessions.clone(),
762+
sessions: sessions.clone(),
761763
peers: Arc::clone(&peers),
762764
routes: Arc::clone(&routes),
763765
route_updates: peer_route_updates,
@@ -774,7 +776,7 @@ where
774776
// remove_os_route can still resolve the interface index.
775777
let removed_routes = routes.remove_by_peer(&peer_name);
776778
for entry in &removed_routes {
777-
if let Some(tun) = conn_sessions.get_tun_for_peer(&peer_name) {
779+
if let Some(tun) = sessions.get_tun_for_peer(&peer_name) {
778780
let _ = remove_os_route(&entry.cidr.to_string(), &tun);
779781
}
780782
}

crates/daemon/src/mode/exit.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,10 +128,11 @@ async fn run_exit_connector(
128128
let peer_addr = peer_addr.clone();
129129
crate::transport::connect_loop(
130130
|| {
131-
let cfg = client_config.clone();
131+
let client_config = client_config.clone();
132132
async move {
133133
use wallhack_core::client::client::Client;
134-
let mut client = wallhack_core::client::quic::QuicClient::try_new(cfg)?;
134+
let mut client =
135+
wallhack_core::client::quic::QuicClient::try_new(client_config)?;
135136
client.connect(NodeRole::Exit).await
136137
}
137138
},
@@ -178,9 +179,10 @@ async fn run_exit_connector(
178179
let peer_addr = peer_addr.clone();
179180
crate::transport::connect_loop(
180181
|| {
181-
let cfg = client_config.clone();
182+
let client_config = client_config.clone();
182183
async move {
183-
let mut client = wallhack_core::client::ws::WsClient::new(cfg)?;
184+
let mut client =
185+
wallhack_core::client::ws::WsClient::new(client_config)?;
184186
client.connect(NodeRole::Exit).await
185187
}
186188
},

crates/daemon/src/mode/relay.rs

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

crates/ipc/src/client.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -243,12 +243,10 @@ impl IpcConnection {
243243
let (notifications_tx, _) = broadcast::channel::<DaemonNotification>(64);
244244

245245
let writer_task = tokio::spawn(Self::writer_task(writer, write_rx));
246-
let reader_notifications_tx = notifications_tx.clone();
247-
let reader_task = tokio::spawn(Self::reader_task(
248-
reader,
249-
response_tx,
250-
reader_notifications_tx,
251-
));
246+
let reader_task = {
247+
let notifications_tx = notifications_tx.clone();
248+
tokio::spawn(Self::reader_task(reader, response_tx, notifications_tx))
249+
};
252250

253251
Self {
254252
write_tx,

0 commit comments

Comments
 (0)