Use public IP for client gossip, if UPnP fails (#665)
This commit is contained in:
parent
1fb537deb9
commit
103584ef27
|
@ -365,6 +365,8 @@ fn spy_node() -> (NodeInfo, UdpSocket) {
|
||||||
let gossip_socket_pair = udp_public_bind("gossip", 8000, 10000);
|
let gossip_socket_pair = udp_public_bind("gossip", 8000, 10000);
|
||||||
let pubkey = KeyPair::new().pubkey();
|
let pubkey = KeyPair::new().pubkey();
|
||||||
let daddr = "0.0.0.0:0".parse().unwrap();
|
let daddr = "0.0.0.0:0".parse().unwrap();
|
||||||
|
assert!(!gossip_socket_pair.addr.ip().is_unspecified());
|
||||||
|
assert!(!gossip_socket_pair.addr.ip().is_multicast());
|
||||||
let node = NodeInfo::new(
|
let node = NodeInfo::new(
|
||||||
pubkey,
|
pubkey,
|
||||||
//gossip.local_addr().unwrap(),
|
//gossip.local_addr().unwrap(),
|
||||||
|
|
|
@ -106,9 +106,13 @@ pub fn udp_public_bind(label: &str, startport: u16, endport: u16) -> UdpSocketPa
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
let sender = udp_random_bind(startport, endport, 5).unwrap();
|
let sender = udp_random_bind(startport, endport, 5).unwrap();
|
||||||
let local_addr = sender.local_addr().unwrap();
|
let local_addr = sender.local_addr().unwrap();
|
||||||
info!("Using local address {} for {}", local_addr, label);
|
|
||||||
|
let pub_ip = get_public_ip_addr().unwrap();
|
||||||
|
let pub_addr = SocketAddr::new(pub_ip, local_addr.port());
|
||||||
|
|
||||||
|
info!("Using source address {} for {}", pub_addr, label);
|
||||||
UdpSocketPair {
|
UdpSocketPair {
|
||||||
addr: private_addr,
|
addr: pub_addr,
|
||||||
receiver: sender.try_clone().unwrap(),
|
receiver: sender.try_clone().unwrap(),
|
||||||
sender,
|
sender,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue