|
|
@@ -4,6 +4,7 @@ use hbb_common::{
|
|
4
|
4
|
allow_err,
|
|
5
|
5
|
bytes::{Bytes, BytesMut},
|
|
6
|
6
|
bytes_codec::BytesCodec,
|
|
|
7
|
+ config,
|
|
7
|
8
|
futures::future::join_all,
|
|
8
|
9
|
futures_util::{
|
|
9
|
10
|
sink::SinkExt,
|
|
|
@@ -25,6 +26,7 @@ use hbb_common::{
|
|
25
|
26
|
time::{interval, Duration},
|
|
26
|
27
|
},
|
|
27
|
28
|
tokio_util::codec::Framed,
|
|
|
29
|
+ try_into_v4,
|
|
28
|
30
|
udp::FramedSocket,
|
|
29
|
31
|
AddrMangle, ResultType,
|
|
30
|
32
|
};
|
|
|
@@ -475,7 +477,7 @@ impl RendezvousServer {
|
|
475
|
477
|
Some(rendezvous_message::Union::PunchHoleRequest(ph)) => {
|
|
476
|
478
|
// there maybe several attempt, so sink can be none
|
|
477
|
479
|
if let Some(sink) = sink.take() {
|
|
478
|
|
- self.tcp_punch.lock().await.insert(addr, sink);
|
|
|
480
|
+ self.tcp_punch.lock().await.insert(try_into_v4(addr), sink);
|
|
479
|
481
|
}
|
|
480
|
482
|
allow_err!(self.handle_tcp_punch_hole_request(addr, ph, key, ws).await);
|
|
481
|
483
|
return true;
|
|
|
@@ -483,7 +485,7 @@ impl RendezvousServer {
|
|
483
|
485
|
Some(rendezvous_message::Union::RequestRelay(mut rf)) => {
|
|
484
|
486
|
// there maybe several attempt, so sink can be none
|
|
485
|
487
|
if let Some(sink) = sink.take() {
|
|
486
|
|
- self.tcp_punch.lock().await.insert(addr, sink);
|
|
|
488
|
+ self.tcp_punch.lock().await.insert(try_into_v4(addr), sink);
|
|
487
|
489
|
}
|
|
488
|
490
|
if let Some(peer) = self.pm.get_in_memory(&rf.id).await {
|
|
489
|
491
|
let mut msg_out = RendezvousMessage::new();
|
|
|
@@ -1048,7 +1050,7 @@ impl RendezvousServer {
|
|
1048
|
1050
|
|
|
1049
|
1051
|
async fn handle_listener2(&self, stream: TcpStream, addr: SocketAddr) {
|
|
1050
|
1052
|
let mut rs = self.clone();
|
|
1051
|
|
- if addr.ip().to_string() == "127.0.0.1" {
|
|
|
1053
|
+ if addr.ip().is_loopback() {
|
|
1052
|
1054
|
tokio::spawn(async move {
|
|
1053
|
1055
|
let mut stream = stream;
|
|
1054
|
1056
|
let mut buffer = [0; 64];
|
|
|
@@ -1203,7 +1205,7 @@ async fn check_relay_servers(rs0: Arc<RelayServers>, tx: Sender) {
|
|
1203
|
1205
|
for x in rs0.iter() {
|
|
1204
|
1206
|
let mut host = x.to_owned();
|
|
1205
|
1207
|
if !host.contains(':') {
|
|
1206
|
|
- host = format!("{}:{}", host, hbb_common::config::RELAY_PORT);
|
|
|
1208
|
+ host = format!("{}:{}", host, config::RELAY_PORT);
|
|
1207
|
1209
|
}
|
|
1208
|
1210
|
let rs = rs.clone();
|
|
1209
|
1211
|
let x = x.clone();
|
|
|
@@ -1226,7 +1228,7 @@ async fn check_relay_servers(rs0: Arc<RelayServers>, tx: Sender) {
|
|
1226
|
1228
|
|
|
1227
|
1229
|
// temp solution to solve udp socket failure
|
|
1228
|
1230
|
async fn test_hbbs(addr: SocketAddr) -> ResultType<()> {
|
|
1229
|
|
- let mut socket = FramedSocket::new("0.0.0.0:0").await?;
|
|
|
1231
|
+ let mut socket = FramedSocket::new(config::Config::get_any_listen_addr(addr.is_ipv4())).await?;
|
|
1230
|
1232
|
let mut msg_out = RendezvousMessage::new();
|
|
1231
|
1233
|
msg_out.set_register_peer(RegisterPeer {
|
|
1232
|
1234
|
id: "(:test_hbbs:)".to_owned(),
|