|
|
@@ -48,7 +48,7 @@ impl RendezvousServer {
|
|
48
|
48
|
loop {
|
|
49
|
49
|
tokio::select! {
|
|
50
|
50
|
Some((addr, id)) = rx.recv() => {
|
|
51
|
|
- allow_err!(rs.handle_punch_hole_request(addr, &id, &mut socket).await);
|
|
|
51
|
+ allow_err!(rs.handle_punch_hole_request(addr, &id, &mut socket, true).await);
|
|
52
|
52
|
}
|
|
53
|
53
|
Some(Ok((bytes, addr))) = socket.next() => {
|
|
54
|
54
|
allow_err!(rs.handle_msg(&bytes, addr, &mut socket).await);
|
|
|
@@ -115,7 +115,8 @@ impl RendezvousServer {
|
|
115
|
115
|
}
|
|
116
|
116
|
}
|
|
117
|
117
|
Some(rendezvous_message::Union::punch_hole_request(ph)) => {
|
|
118
|
|
- self.handle_punch_hole_request(addr, &ph.id, socket).await?;
|
|
|
118
|
+ self.handle_punch_hole_request(addr, &ph.id, socket, false)
|
|
|
119
|
+ .await?;
|
|
119
|
120
|
}
|
|
120
|
121
|
Some(rendezvous_message::Union::punch_hole_sent(phs)) => {
|
|
121
|
122
|
self.handle_hole_sent(&phs, addr, Some(socket)).await?;
|
|
|
@@ -188,6 +189,7 @@ impl RendezvousServer {
|
|
188
|
189
|
addr: SocketAddr,
|
|
189
|
190
|
id: &str,
|
|
190
|
191
|
socket: &mut FramedSocket,
|
|
|
192
|
+ is_tcp: bool,
|
|
191
|
193
|
) -> ResultType<()> {
|
|
192
|
194
|
// punch hole request from A, forward to B,
|
|
193
|
195
|
// check if in same intranet first,
|
|
|
@@ -201,7 +203,11 @@ impl RendezvousServer {
|
|
201
|
203
|
failure: punch_hole_response::Failure::OFFLINE.into(),
|
|
202
|
204
|
..Default::default()
|
|
203
|
205
|
});
|
|
204
|
|
- return socket.send(&msg_out, addr).await;
|
|
|
206
|
+ return if is_tcp {
|
|
|
207
|
+ self.send_to_tcp(&msg_out, addr).await
|
|
|
208
|
+ } else {
|
|
|
209
|
+ socket.send(&msg_out, addr).await
|
|
|
210
|
+ };
|
|
205
|
211
|
}
|
|
206
|
212
|
let mut msg_out = RendezvousMessage::new();
|
|
207
|
213
|
let same_intranet = match peer.socket_addr {
|
|
|
@@ -245,7 +251,11 @@ impl RendezvousServer {
|
|
245
|
251
|
failure: punch_hole_response::Failure::ID_NOT_EXIST.into(),
|
|
246
|
252
|
..Default::default()
|
|
247
|
253
|
});
|
|
248
|
|
- socket.send(&msg_out, addr).await?
|
|
|
254
|
+ return if is_tcp {
|
|
|
255
|
+ self.send_to_tcp(&msg_out, addr).await
|
|
|
256
|
+ } else {
|
|
|
257
|
+ socket.send(&msg_out, addr).await
|
|
|
258
|
+ };
|
|
249
|
259
|
}
|
|
250
|
260
|
Ok(())
|
|
251
|
261
|
}
|