tentative bgufix

This commit is contained in:
Simon Wicky
2023-08-08 16:13:18 +02:00
parent d00d4bd73e
commit b5a2b79eeb
4 changed files with 46 additions and 19 deletions
@@ -132,7 +132,10 @@ impl TopologyAccessor {
}
pub async fn current_topology(&self) -> Option<NymTopology> {
self.inner.topology.read().await.clone()
let read_lock = self.inner.topology.read().await;
let topology = read_lock.clone();
drop(read_lock);
topology
}
pub async fn manually_change_topology(&self, new_topology: NymTopology) {
+14 -6
View File
@@ -112,18 +112,26 @@ impl Client {
// if we managed to connect, reset the reconnection count (whatever it might have been)
current_reconnection.store(0, Ordering::Release);
//Get the topology, because we need the keys for the handshake
let topology_permit = topology_access.get_read_permit().await;
let topology_ref = match topology_permit.try_get_raw_topology_ref() {
Ok(topology) => topology,
Err(err) => {
error!("Cannot perform Noise handshake to {address}, due to topology error - {err}");
// let topology_permit = topology_access.get_read_permit().await;
// let topology_ref = match topology_permit.try_get_raw_topology_ref() {
// Ok(topology) => topology,
// Err(err) => {
// error!("Cannot perform Noise handshake to {address}, due to topology error - {err}");
// return;
// }
// };
let topology_ref = match topology_access.current_topology().await {
Some(topology) => topology,
None => {
error!("Cannot perform Noise handshake to {address}, due to topology error");
return;
}
};
let noise_stream = match upgrade_noise_initiator_with_topology(
stream,
topology_ref,
&topology_ref,
local_public_key,
local_private_key,
)
@@ -196,18 +196,26 @@ impl<St: Storage> ConnectionHandler<St> {
shutdown.mark_as_success();
let topology_access_clonne = self.topology_access.clone();
let topology_permit = topology_access_clonne.get_read_permit().await;
let topology_ref = match topology_permit.try_get_raw_topology_ref() {
Ok(topology) => topology,
Err(err) => {
error!("Cannot connect to {remote}, due to topology error - {err}");
// let topology_permit = topology_access_clonne.get_read_permit().await;
// let topology_ref = match topology_permit.try_get_raw_topology_ref() {
// Ok(topology) => topology,
// Err(err) => {
// error!("Cannot connect to {remote}, due to topology error - {err}");
// return;
// }
// };
let topology_ref = match topology_access_clonne.current_topology().await {
Some(topology) => topology,
None => {
error!("Cannot perform Noise handshake to {remote}, due to topology error");
return;
}
};
let noise_stream = match upgrade_noise_responder_with_topology(
conn,
topology_ref,
&topology_ref,
&self.local_identity.public_key().to_bytes(),
&self.local_identity.private_key().to_bytes(),
)
@@ -98,18 +98,26 @@ impl ConnectionHandler {
shutdown.mark_as_success();
let topology_permit = self.topology_access.get_read_permit().await;
let topology_ref = match topology_permit.try_get_raw_topology_ref() {
Ok(topology) => topology,
Err(err) => {
error!("Cannot connect to {remote}, due to topology error - {err}");
// let topology_permit = self.topology_access.get_read_permit().await;
// let topology_ref = match topology_permit.try_get_raw_topology_ref() {
// Ok(topology) => topology,
// Err(err) => {
// error!("Cannot connect to {remote}, due to topology error - {err}");
// return;
// }
// };
let topology_ref = match self.topology_access.current_topology().await {
Some(topology) => topology,
None => {
error!("Cannot perform Noise handshake to {remote}, due to topology error");
return;
}
};
let noise_stream = match upgrade_noise_responder_with_topology(
conn,
topology_ref,
&topology_ref,
&self.local_identity.public_key().to_bytes(),
&self.local_identity.private_key().to_bytes(),
)