diff --git a/src/main.rs b/src/main.rs index b7ac663..e926f37 100644 --- a/src/main.rs +++ b/src/main.rs @@ -15,11 +15,11 @@ use futures_util::{future, pin_mut, stream::TryStreamExt, FutureExt, StreamExt}; use log::{debug, error, warn}; use message::{broadcast_message, process_message, BroadcastType, MessageCache, MESSAGECACHE}; use scan::compute_partial_tweak_to_transaction; -use sdk_common::{process::CACHEDPROCESSES, sp_client::bitcoin::{ +use sdk_common::{process::CACHEDPROCESSES, sp_client::{bitcoin::{ consensus::deserialize, hex::{DisplayHex, FromHex}, Amount, Network, Transaction, -}, MutexExt}; +}, silentpayments::utils::SilentPaymentAddress}, MutexExt}; use sdk_common::sp_client::{ bitcoin::OutPoint, bitcoin::secp256k1::rand::{thread_rng, Rng}, @@ -159,7 +159,7 @@ fn handle_new_tx_request(new_tx_msg: &NewTxMessage) -> Result<()> { Ok(()) } -async fn handle_connection(raw_stream: TcpStream, addr: SocketAddr) { +async fn handle_connection(raw_stream: TcpStream, addr: SocketAddr, our_sp_address: SilentPaymentAddress) { debug!("Incoming TCP connection from: {}", addr); let peers = PEERMAP.get().expect("Peer Map not initialized"); @@ -179,6 +179,16 @@ async fn handle_connection(raw_stream: TcpStream, addr: SocketAddr) { } }; + if let Err(e) = broadcast_message( + AnkFlag::Init, + format!("{}", our_sp_address.to_string()), + BroadcastType::Sender(addr) + ) + { + log::error!("Failed to send init message: {}", e); + return; + } + let (outgoing, incoming) = ws_stream.split(); let broadcast_incoming = incoming.try_for_each(|msg| { @@ -352,10 +362,12 @@ async fn main() -> Result<()> { Ok(wallet) => wallet, // TODO check network }; + let our_sp_address = sp_wallet.get_client().get_receiving_address(); + log::info!( "Using wallet {} with address {}", sp_wallet.get_client().label, - sp_wallet.get_client().get_receiving_address() + our_sp_address, ); log::info!( @@ -391,7 +403,7 @@ async fn main() -> Result<()> { // Let's spawn the handling of each connection in a separate task. while let Ok((stream, addr)) = listener.accept().await { - tokio::spawn(handle_connection(stream, addr)); + tokio::spawn(handle_connection(stream, addr, our_sp_address.as_str().try_into().unwrap())); } Ok(()) diff --git a/src/message.rs b/src/message.rs index f32a4cc..0d1d5a1 100644 --- a/src/message.rs +++ b/src/message.rs @@ -216,6 +216,7 @@ pub fn process_message(raw_msg: &str, addr: SocketAddr) { AnkFlag::Cipher => process_cipher_message(ank_msg, addr), AnkFlag::Commit => process_commit_message(ank_msg, addr), AnkFlag::Unknown => process_unknown_message(ank_msg, addr), + AnkFlag::Init => log::debug!("Received init message from {}", addr), }, Err(_) => log::error!("Failed to parse network message"), }