|
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