handle unreachable
This commit is contained in:
		| @@ -66,9 +66,10 @@ impl NetworkManager { | ||||
|                         ) | ||||
|                     } | ||||
|                     NodeContactMethod::Unreachable => { | ||||
|                         return Ok(NetworkResult::no_connection_other( | ||||
|                             "Can't send to this node", | ||||
|                         )); | ||||
|                         network_result_try!( | ||||
|                             this.send_data_ncm_unreachable(target_node_ref, data) | ||||
|                                 .await? | ||||
|                         ) | ||||
|                     } | ||||
|                 }; | ||||
|  | ||||
| @@ -113,6 +114,38 @@ impl NetworkManager { | ||||
|         ))) | ||||
|     } | ||||
|  | ||||
|     /// Send data using NodeContactMethod::Unreachable | ||||
|     async fn send_data_ncm_unreachable( | ||||
|         &self, | ||||
|         target_node_ref: NodeRef, | ||||
|         data: Vec<u8>, | ||||
|     ) -> EyreResult<NetworkResult<SendDataKind>> { | ||||
|         // Try to send data to the last socket we've seen this peer on | ||||
|         let Some(connection_descriptor) = target_node_ref.last_connection() else { | ||||
|             return Ok(NetworkResult::no_connection_other( | ||||
|                 "Node is not reachable and has no existing connection", | ||||
|             )); | ||||
|         }; | ||||
|  | ||||
|         if self | ||||
|             .net() | ||||
|             .send_data_to_existing_connection(connection_descriptor, data) | ||||
|             .await? | ||||
|             .is_some() | ||||
|         { | ||||
|             return Ok(NetworkResult::no_connection_other( | ||||
|                 "failed to send to existing connection", | ||||
|             )); | ||||
|         } | ||||
|  | ||||
|         // Update timestamp for this last connection since we just sent to it | ||||
|         target_node_ref.set_last_connection(connection_descriptor, get_aligned_timestamp()); | ||||
|  | ||||
|         Ok(NetworkResult::value(SendDataKind::Existing( | ||||
|             connection_descriptor, | ||||
|         ))) | ||||
|     } | ||||
|  | ||||
|     /// Send data using NodeContactMethod::SignalReverse | ||||
|     async fn send_data_ncm_signal_reverse( | ||||
|         &self, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user