Add Init message at connection with client

This commit is contained in:
Sosthene 2024-12-17 13:42:38 +01:00
parent cc2368996f
commit e708372223
2 changed files with 18 additions and 5 deletions

View File

@ -15,11 +15,11 @@ use futures_util::{future, pin_mut, stream::TryStreamExt, FutureExt, StreamExt};
use log::{debug, error, warn}; use log::{debug, error, warn};
use message::{broadcast_message, process_message, BroadcastType, MessageCache, MESSAGECACHE}; use message::{broadcast_message, process_message, BroadcastType, MessageCache, MESSAGECACHE};
use scan::compute_partial_tweak_to_transaction; 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, consensus::deserialize,
hex::{DisplayHex, FromHex}, hex::{DisplayHex, FromHex},
Amount, Network, Transaction, Amount, Network, Transaction,
}, MutexExt}; }, silentpayments::utils::SilentPaymentAddress}, MutexExt};
use sdk_common::sp_client::{ use sdk_common::sp_client::{
bitcoin::OutPoint, bitcoin::OutPoint,
bitcoin::secp256k1::rand::{thread_rng, Rng}, bitcoin::secp256k1::rand::{thread_rng, Rng},
@ -159,7 +159,7 @@ fn handle_new_tx_request(new_tx_msg: &NewTxMessage) -> Result<()> {
Ok(()) 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); debug!("Incoming TCP connection from: {}", addr);
let peers = PEERMAP.get().expect("Peer Map not initialized"); 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 (outgoing, incoming) = ws_stream.split();
let broadcast_incoming = incoming.try_for_each(|msg| { let broadcast_incoming = incoming.try_for_each(|msg| {
@ -352,10 +362,12 @@ async fn main() -> Result<()> {
Ok(wallet) => wallet, // TODO check network Ok(wallet) => wallet, // TODO check network
}; };
let our_sp_address = sp_wallet.get_client().get_receiving_address();
log::info!( log::info!(
"Using wallet {} with address {}", "Using wallet {} with address {}",
sp_wallet.get_client().label, sp_wallet.get_client().label,
sp_wallet.get_client().get_receiving_address() our_sp_address,
); );
log::info!( log::info!(
@ -391,7 +403,7 @@ async fn main() -> Result<()> {
// Let's spawn the handling of each connection in a separate task. // Let's spawn the handling of each connection in a separate task.
while let Ok((stream, addr)) = listener.accept().await { 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(()) Ok(())

View File

@ -216,6 +216,7 @@ pub fn process_message(raw_msg: &str, addr: SocketAddr) {
AnkFlag::Cipher => process_cipher_message(ank_msg, addr), AnkFlag::Cipher => process_cipher_message(ank_msg, addr),
AnkFlag::Commit => process_commit_message(ank_msg, addr), AnkFlag::Commit => process_commit_message(ank_msg, addr),
AnkFlag::Unknown => process_unknown_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"), Err(_) => log::error!("Failed to parse network message"),
} }