Add peer validation and successful handshake
This commit is contained in:
parent
b30d72501c
commit
0a8b0069dc
@ -139,9 +139,20 @@ impl MessageHandler {
|
|||||||
// we match on id and ignore responses past the timeout.
|
// we match on id and ignore responses past the timeout.
|
||||||
fn handle_rpc_response(&mut self, peer_id: PeerId, id: u64, response: RPCResponse) {
|
fn handle_rpc_response(&mut self, peer_id: PeerId, id: u64, response: RPCResponse) {
|
||||||
// if response id is related to a request, ignore (likely RPC timeout)
|
// if response id is related to a request, ignore (likely RPC timeout)
|
||||||
if self.requests.remove(&(peer_id, id)).is_none() {
|
if self
|
||||||
|
.requests
|
||||||
|
.remove(&(peer_id.clone(), id.clone()))
|
||||||
|
.is_none()
|
||||||
|
{
|
||||||
|
debug!(self.log, "Unrecognized response from peer: {:?}", peer_id);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
match response {
|
||||||
|
RPCResponse::Hello(hello_message) => {
|
||||||
|
debug!(self.log, "Hello response received from peer: {:?}", peer_id);
|
||||||
|
self.validate_hello(peer_id, hello_message);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Handle a HELLO RPC request message.
|
/// Handle a HELLO RPC request message.
|
||||||
@ -149,7 +160,13 @@ impl MessageHandler {
|
|||||||
// send back a HELLO message
|
// send back a HELLO message
|
||||||
self.send_hello(peer_id.clone(), id, false);
|
self.send_hello(peer_id.clone(), id, false);
|
||||||
// validate the peer
|
// validate the peer
|
||||||
if !self.sync.validate_peer(peer_id.clone(), hello_message) {
|
self.validate_hello(peer_id, hello_message);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Validate a HELLO RPC message.
|
||||||
|
fn validate_hello(&mut self, peer_id: PeerId, message: HelloMessage) {
|
||||||
|
// validate the peer
|
||||||
|
if !self.sync.validate_peer(peer_id.clone(), message) {
|
||||||
debug!(
|
debug!(
|
||||||
self.log,
|
self.log,
|
||||||
"Peer dropped due to mismatching HELLO messages: {:?}", peer_id
|
"Peer dropped due to mismatching HELLO messages: {:?}", peer_id
|
||||||
@ -158,13 +175,6 @@ impl MessageHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Handle a HELLO RPC response message.
|
|
||||||
fn handle_hello_response(&mut self, peer_id: PeerId, id: u64, response: HelloMessage) {
|
|
||||||
debug!(self.log, "Hello response received from peer: {:?}", peer_id);
|
|
||||||
// validate peer - decide whether to drop/ban or add to sync
|
|
||||||
// TODO: Peer validation
|
|
||||||
}
|
|
||||||
|
|
||||||
/* General RPC helper functions */
|
/* General RPC helper functions */
|
||||||
|
|
||||||
/// Generates a new request id for a peer.
|
/// Generates a new request id for a peer.
|
||||||
|
Loading…
Reference in New Issue
Block a user