splash
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
use tokio::sync::oneshot;
|
||||
|
||||
use crate::{
|
||||
NetworkEvent, NodeHash,
|
||||
NetworkEvent, NodeHash, P2PSharedData,
|
||||
cryptographic_signature::{
|
||||
CryptographicSignature, get_peer_key, sign_message, verify_signature,
|
||||
},
|
||||
@@ -49,6 +51,8 @@ const DATUM: u8 = 132;
|
||||
const NATTRAVERSALREQUEST: u8 = 4;
|
||||
const NATTRAVERSALREQUEST2: u8 = 5;
|
||||
|
||||
type PendingMap = Arc<Mutex<HashMap<i32, oneshot::Sender<Vec<u8>>>>>;
|
||||
|
||||
pub fn handle_recevied_message(
|
||||
messages_list: &Arc<Mutex<HashMap<i32, EventType>>>,
|
||||
recevied_message: &Vec<u8>,
|
||||
@@ -59,6 +63,7 @@ pub fn handle_recevied_message(
|
||||
cmd_tx: crossbeam_channel::Sender<NetworkEvent>,
|
||||
ip: SocketAddr,
|
||||
handhsake_history: Arc<HandshakeHistory>,
|
||||
pending: PendingMap,
|
||||
) {
|
||||
if recevied_message.len() < 4 {
|
||||
return;
|
||||
@@ -67,6 +72,16 @@ pub fn handle_recevied_message(
|
||||
let message_id: [u8; 4] = recevied_message[0..4].try_into().expect("size error");
|
||||
let id = i32::from_be_bytes(message_id);
|
||||
|
||||
let maybe_tx = {
|
||||
let mut map = pending.lock().expect("couldnt lock pending map");
|
||||
map.remove(&id)
|
||||
};
|
||||
|
||||
if let Some(tx) = maybe_tx {
|
||||
let _ = tx.send(Vec::new()); // ignore send error if receiver dropped
|
||||
return;
|
||||
}
|
||||
|
||||
let mut is_resp_to_server_handshake = false;
|
||||
|
||||
if recevied_message[4] == HELLO {
|
||||
|
||||
Reference in New Issue
Block a user