Skip to content

Commit 0d00a33

Browse files
committed
adjust fullcone_map code
1 parent 5129dea commit 0d00a33

File tree

3 files changed

+30
-12
lines changed

3 files changed

+30
-12
lines changed

src/origin/in_udp.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,14 @@ impl In {
2525
} else {
2626
let (own_tx, own_rx) = channel::<Vec<u8>>(100);
2727
self.fullcone_map.insert(saddr.clone(), own_tx.clone());
28-
tokio::spawn(self.clone().handle_udp(saddr.clone(), own_rx));
28+
tokio::spawn({
29+
let self_clone = self.clone();
30+
let saddr = saddr.clone();
31+
async move {
32+
self_clone.clone().handle_udp(saddr.clone(), own_rx).await;
33+
self_clone.fullcone_map.remove(&saddr);
34+
}
35+
});
2936
own_tx
3037
};
3138

@@ -84,9 +91,6 @@ impl In {
8491
}
8592
_ => unreachable!(),
8693
}
87-
88-
// delete from fullcone_map
89-
self.fullcone_map.remove(&saddr);
9094
});
9195
}
9296
}

src/socks5/in_udp.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,17 @@ impl In {
2828
} else {
2929
let (own_tx, own_rx) = channel::<Vec<u8>>(100);
3030
self.fullcone_map.insert(saddr.clone(), own_tx.clone());
31-
tokio::spawn(self.clone().handle_socks5_udp(saddr.clone(), own_rx));
31+
tokio::spawn({
32+
let self_clone = self.clone();
33+
let saddr = saddr.clone();
34+
async move {
35+
self_clone
36+
.clone()
37+
.handle_socks5_udp(saddr.clone(), own_rx)
38+
.await;
39+
self_clone.fullcone_map.remove(&saddr);
40+
}
41+
});
3242
own_tx
3343
};
3444

@@ -153,9 +163,6 @@ impl In {
153163
}
154164
_ => unreachable!(),
155165
}
156-
157-
// delete from fullcone_map
158-
self.fullcone_map.remove(&saddr);
159166
});
160167
}
161168

src/tproxy/in_udp.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,17 @@ impl In {
5353
} else {
5454
let (own_tx, own_rx) = channel::<(String, Vec<u8>)>(100);
5555
self.fullcone_map.insert(saddr.clone(), own_tx.clone());
56-
tokio::spawn(self.clone().handle_tproxy_udp(saddr.clone(), own_rx));
56+
tokio::spawn({
57+
let self_clone = self.clone();
58+
let saddr = saddr.clone();
59+
async move {
60+
self_clone
61+
.clone()
62+
.handle_tproxy_udp(saddr.clone(), own_rx)
63+
.await;
64+
self_clone.fullcone_map.remove(&saddr);
65+
}
66+
});
5767
own_tx
5868
};
5969

@@ -116,9 +126,6 @@ impl In {
116126
}
117127
_ => unreachable!(),
118128
}
119-
120-
// delete from fullcone_map
121-
self.fullcone_map.remove(&saddr);
122129
});
123130
}
124131

0 commit comments

Comments
 (0)