|
78 | 78 | mod balance; |
79 | 79 | mod builder; |
80 | 80 | mod config; |
| 81 | +mod connection; |
81 | 82 | mod error; |
82 | 83 | mod event; |
83 | 84 | mod fee_estimator; |
@@ -124,6 +125,7 @@ use config::{ |
124 | 125 | LDK_PAYMENT_RETRY_TIMEOUT, NODE_ANN_BCAST_INTERVAL, PEER_RECONNECTION_INTERVAL, |
125 | 126 | RGS_SYNC_INTERVAL, WALLET_SYNC_INTERVAL_MINIMUM_SECS, |
126 | 127 | }; |
| 128 | +use connection::{connect_peer_if_necessary, do_connect_peer}; |
127 | 129 | use event::{EventHandler, EventQueue}; |
128 | 130 | use gossip::GossipSource; |
129 | 131 | use liquidity::LiquiditySource; |
@@ -1740,56 +1742,3 @@ impl Drop for Node { |
1740 | 1742 | let _ = self.stop(); |
1741 | 1743 | } |
1742 | 1744 | } |
1743 | | - |
1744 | | -async fn connect_peer_if_necessary( |
1745 | | - node_id: PublicKey, addr: SocketAddress, peer_manager: Arc<PeerManager>, |
1746 | | - logger: Arc<FilesystemLogger>, |
1747 | | -) -> Result<(), Error> { |
1748 | | - if peer_manager.peer_by_node_id(&node_id).is_some() { |
1749 | | - return Ok(()); |
1750 | | - } |
1751 | | - |
1752 | | - do_connect_peer(node_id, addr, peer_manager, logger).await |
1753 | | -} |
1754 | | - |
1755 | | -async fn do_connect_peer( |
1756 | | - node_id: PublicKey, addr: SocketAddress, peer_manager: Arc<PeerManager>, |
1757 | | - logger: Arc<FilesystemLogger>, |
1758 | | -) -> Result<(), Error> { |
1759 | | - log_info!(logger, "Connecting to peer: {}@{}", node_id, addr); |
1760 | | - |
1761 | | - let socket_addr = addr |
1762 | | - .to_socket_addrs() |
1763 | | - .map_err(|e| { |
1764 | | - log_error!(logger, "Failed to resolve network address: {}", e); |
1765 | | - Error::InvalidSocketAddress |
1766 | | - })? |
1767 | | - .next() |
1768 | | - .ok_or(Error::ConnectionFailed)?; |
1769 | | - |
1770 | | - match lightning_net_tokio::connect_outbound(Arc::clone(&peer_manager), node_id, socket_addr) |
1771 | | - .await |
1772 | | - { |
1773 | | - Some(connection_closed_future) => { |
1774 | | - let mut connection_closed_future = Box::pin(connection_closed_future); |
1775 | | - loop { |
1776 | | - match futures::poll!(&mut connection_closed_future) { |
1777 | | - std::task::Poll::Ready(_) => { |
1778 | | - log_info!(logger, "Peer connection closed: {}@{}", node_id, addr); |
1779 | | - return Err(Error::ConnectionFailed); |
1780 | | - }, |
1781 | | - std::task::Poll::Pending => {}, |
1782 | | - } |
1783 | | - // Avoid blocking the tokio context by sleeping a bit |
1784 | | - match peer_manager.peer_by_node_id(&node_id) { |
1785 | | - Some(_) => return Ok(()), |
1786 | | - None => tokio::time::sleep(Duration::from_millis(10)).await, |
1787 | | - } |
1788 | | - } |
1789 | | - }, |
1790 | | - None => { |
1791 | | - log_error!(logger, "Failed to connect to peer: {}@{}", node_id, addr); |
1792 | | - Err(Error::ConnectionFailed) |
1793 | | - }, |
1794 | | - } |
1795 | | -} |
0 commit comments