X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fcli.rs;h=00eb04787cb9fdefa3df35ffeccd58ca67b1f517;hb=f21537916008cc7c1030466363cd19dc82b8623f;hp=0bea87041252b9b0cfcca134a8cf52a2cbb2fe16;hpb=1db442581294d073de85c4e9f21393f87bb0515c;p=ldk-sample diff --git a/src/cli.rs b/src/cli.rs index 0bea870..00eb047 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -352,7 +352,7 @@ pub(crate) async fn poll_for_user_input( "nodeinfo" => node_info(channel_manager.clone(), peer_manager.clone()), "listpeers" => list_peers(peer_manager.clone()), "signmessage" => { - const MSG_STARTPOS: usize = "signmsg".len() + 1; + const MSG_STARTPOS: usize = "signmessage".len() + 1; if line.as_bytes().len() <= MSG_STARTPOS { println!("ERROR: signmsg requires a message"); continue; @@ -492,6 +492,16 @@ pub(crate) async fn connect_peer_if_necessary( return Ok(()); } } + let res = do_connect_peer(pubkey, peer_addr, peer_manager).await; + if res.is_err() { + println!("ERROR: failed to connect to peer"); + } + res +} + +pub(crate) async fn do_connect_peer( + pubkey: PublicKey, peer_addr: SocketAddr, peer_manager: Arc, +) -> Result<(), ()> { match lightning_net_tokio::connect_outbound(Arc::clone(&peer_manager), pubkey, peer_addr).await { Some(connection_closed_future) => { @@ -499,24 +509,19 @@ pub(crate) async fn connect_peer_if_necessary( loop { match futures::poll!(&mut connection_closed_future) { std::task::Poll::Ready(_) => { - println!("ERROR: Peer disconnected before we finished the handshake"); return Err(()); } std::task::Poll::Pending => {} } // Avoid blocking the tokio context by sleeping a bit match peer_manager.get_peer_node_ids().iter().find(|id| **id == pubkey) { - Some(_) => break, + Some(_) => return Ok(()), None => tokio::time::sleep(Duration::from_millis(10)).await, } } } - None => { - println!("ERROR: failed to connect to peer"); - return Err(()); - } + None => Err(()), } - Ok(()) } fn open_channel(