better error handling
This commit is contained in:
@@ -685,12 +685,12 @@ impl NetworkManager {
|
||||
peer_info,
|
||||
false,
|
||||
) {
|
||||
None => {
|
||||
Ok(nr) => nr,
|
||||
Err(e) => {
|
||||
return Ok(NetworkResult::invalid_message(
|
||||
"unable to register reverse connect peerinfo",
|
||||
))
|
||||
format!("unable to register reverse connect peerinfo: {}", e)
|
||||
));
|
||||
}
|
||||
Some(nr) => nr,
|
||||
};
|
||||
|
||||
// Make a reverse connection to the peer and send the receipt to it
|
||||
@@ -708,13 +708,12 @@ impl NetworkManager {
|
||||
peer_info,
|
||||
false,
|
||||
) {
|
||||
None => {
|
||||
Ok(nr) => nr,
|
||||
Err(e) => {
|
||||
return Ok(NetworkResult::invalid_message(
|
||||
//sender_id,
|
||||
"unable to register hole punch connect peerinfo",
|
||||
format!("unable to register hole punch connect peerinfo: {}", e)
|
||||
));
|
||||
}
|
||||
Some(nr) => nr,
|
||||
};
|
||||
|
||||
// Get the udp direct dialinfo for the hole punch
|
||||
@@ -1103,7 +1102,7 @@ impl NetworkManager {
|
||||
ContactMethod::Direct(di) => NodeContactMethod::Direct(di),
|
||||
ContactMethod::SignalReverse(relay_key, target_key) => {
|
||||
let relay_nr = routing_table
|
||||
.lookup_and_filter_noderef(relay_key, routing_domain.into(), dial_info_filter)
|
||||
.lookup_and_filter_noderef(relay_key, routing_domain.into(), dial_info_filter)?
|
||||
.ok_or_else(|| eyre!("couldn't look up relay"))?;
|
||||
if !target_node_ref.node_ids().contains(&target_key) {
|
||||
bail!("target noderef didn't match target key");
|
||||
@@ -1112,7 +1111,7 @@ impl NetworkManager {
|
||||
}
|
||||
ContactMethod::SignalHolePunch(relay_key, target_key) => {
|
||||
let relay_nr = routing_table
|
||||
.lookup_and_filter_noderef(relay_key, routing_domain.into(), dial_info_filter)
|
||||
.lookup_and_filter_noderef(relay_key, routing_domain.into(), dial_info_filter)?
|
||||
.ok_or_else(|| eyre!("couldn't look up relay"))?;
|
||||
if target_node_ref.node_ids().contains(&target_key) {
|
||||
bail!("target noderef didn't match target key");
|
||||
@@ -1121,13 +1120,13 @@ impl NetworkManager {
|
||||
}
|
||||
ContactMethod::InboundRelay(relay_key) => {
|
||||
let relay_nr = routing_table
|
||||
.lookup_and_filter_noderef(relay_key, routing_domain.into(), dial_info_filter)
|
||||
.lookup_and_filter_noderef(relay_key, routing_domain.into(), dial_info_filter)?
|
||||
.ok_or_else(|| eyre!("couldn't look up relay"))?;
|
||||
NodeContactMethod::InboundRelay(relay_nr)
|
||||
}
|
||||
ContactMethod::OutboundRelay(relay_key) => {
|
||||
let relay_nr = routing_table
|
||||
.lookup_and_filter_noderef(relay_key, routing_domain.into(), dial_info_filter)
|
||||
.lookup_and_filter_noderef(relay_key, routing_domain.into(), dial_info_filter)?
|
||||
.ok_or_else(|| eyre!("couldn't look up relay"))?;
|
||||
NodeContactMethod::OutboundRelay(relay_nr)
|
||||
}
|
||||
@@ -1430,7 +1429,13 @@ impl NetworkManager {
|
||||
// We should, because relays are chosen by nodes that have established connectivity and
|
||||
// should be mutually in each others routing tables. The node needing the relay will be
|
||||
// pinging this node regularly to keep itself in the routing table
|
||||
routing_table.lookup_node_ref(recipient_id)
|
||||
match routing_table.lookup_node_ref(recipient_id) {
|
||||
Ok(v) => v,
|
||||
Err(e) => {
|
||||
log_net!(debug "failed to look up recipient node for relay, dropping outbound relayed packet: {}" ,e);
|
||||
return Ok(false);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if let Some(relay_nr) = some_relay_nr {
|
||||
@@ -1472,12 +1477,12 @@ impl NetworkManager {
|
||||
connection_descriptor,
|
||||
ts,
|
||||
) {
|
||||
None => {
|
||||
Ok(v) => v,
|
||||
Err(e) => {
|
||||
// If the node couldn't be registered just skip this envelope,
|
||||
// the error will have already been logged
|
||||
log_net!(debug "failed to register node with existing connection: {}", e);
|
||||
return Ok(false);
|
||||
}
|
||||
Some(v) => v,
|
||||
};
|
||||
source_noderef.add_envelope_version(envelope.get_version());
|
||||
|
||||
@@ -1574,7 +1579,7 @@ impl NetworkManager {
|
||||
peers: {
|
||||
let mut out = Vec::new();
|
||||
for (k, v) in routing_table.get_recent_peers() {
|
||||
if let Some(nr) = routing_table.lookup_node_ref(k) {
|
||||
if let Ok(Some(nr)) = routing_table.lookup_node_ref(k) {
|
||||
let peer_stats = nr.peer_stats();
|
||||
let peer = PeerTableData {
|
||||
node_ids: nr.node_ids().iter().copied().collect(),
|
||||
|
Reference in New Issue
Block a user