network fixes

This commit is contained in:
John Smith
2023-07-16 12:28:27 -04:00
parent 823db3adf2
commit 3b76b1f81f
7 changed files with 176 additions and 114 deletions

View File

@@ -333,7 +333,7 @@ impl Network {
}
}
pub fn get_local_port(&self, protocol_type: ProtocolType) -> u16 {
pub fn get_local_port(&self, protocol_type: ProtocolType) -> Option<u16> {
let inner = self.inner.lock();
let local_port = match protocol_type {
ProtocolType::UDP => inner.udp_port,
@@ -341,10 +341,10 @@ impl Network {
ProtocolType::WS => inner.ws_port,
ProtocolType::WSS => inner.wss_port,
};
local_port
Some(local_port)
}
fn get_preferred_local_address(&self, dial_info: &DialInfo) -> SocketAddr {
pub fn get_preferred_local_address(&self, dial_info: &DialInfo) -> Option<SocketAddr> {
let inner = self.inner.lock();
let local_port = match dial_info.protocol_type() {
@@ -354,10 +354,10 @@ impl Network {
ProtocolType::WSS => inner.wss_port,
};
match dial_info.address_type() {
Some(match dial_info.address_type() {
AddressType::IPV4 => SocketAddr::new(IpAddr::V4(Ipv4Addr::UNSPECIFIED), local_port),
AddressType::IPV6 => SocketAddr::new(IpAddr::V6(Ipv6Addr::UNSPECIFIED), local_port),
}
})
}
pub fn is_usable_interface_address(&self, addr: IpAddr) -> bool {
@@ -631,10 +631,9 @@ impl Network {
.wrap_err("failed to send data to dial info")?);
} else {
// Handle connection-oriented protocols
let local_addr = self.get_preferred_local_address(&dial_info);
let conn = network_result_try!(
self.connection_manager()
.get_or_create_connection(Some(local_addr), dial_info.clone())
.get_or_create_connection(dial_info.clone())
.await?
);

View File

@@ -256,7 +256,7 @@ impl DiscoveryContext {
let at = inner.address_type.unwrap();
let external_address_1 = inner.external_1_address.unwrap();
let node_1 = inner.node_1.as_ref().unwrap().clone();
let local_port = self.net.get_local_port(pt);
let local_port = self.net.get_local_port(pt).unwrap();
(pt, llpt, at, external_address_1, node_1, local_port)
};