27 lines
968 B
Rust
27 lines
968 B
Rust
use std::net::SocketAddr;
|
|
|
|
use sdk_common::network::{AnkFlag, Envelope, NewTxMessage};
|
|
|
|
use crate::handle_new_tx_request;
|
|
use super::super::broadcast::{broadcast_message, BroadcastType};
|
|
|
|
pub(crate) fn handle_new_tx(ank_msg: Envelope, addr: SocketAddr) {
|
|
log::debug!("Received a new tx message");
|
|
if let Ok(mut new_tx_msg) = serde_json::from_str::<NewTxMessage>(&ank_msg.content) {
|
|
if let Err(e) = handle_new_tx_request(&mut new_tx_msg) {
|
|
log::error!("handle_new_tx_request returned error: {}", e);
|
|
new_tx_msg.error = Some(e.into());
|
|
if let Err(e) = broadcast_message(
|
|
AnkFlag::NewTx,
|
|
serde_json::to_string(&new_tx_msg).expect("This shouldn't fail"),
|
|
BroadcastType::Sender(addr),
|
|
) {
|
|
log::error!("Failed to broadcast message: {}", e);
|
|
}
|
|
}
|
|
} else {
|
|
log::error!("Invalid content for new_tx message");
|
|
}
|
|
}
|
|
|