Add Init message at connection with client

This commit is contained in:
Sosthene 2024-12-17 13:42:38 +01:00 committed by Nicolas Cantu
parent 25eb76ae22
commit e563ae7cca
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 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(())

View File

@ -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"),
}