mirror of
https://github.com/mimblewimble/grin.git
synced 2025-05-01 23:01:15 +03:00
Relax our p2p rules around matching protocol versions (#2764)
This commit is contained in:
parent
3c400f7e2a
commit
19106b3643
5 changed files with 20 additions and 18 deletions
|
@ -86,12 +86,7 @@ impl Handshake {
|
||||||
// write and read the handshake response
|
// write and read the handshake response
|
||||||
write_message(conn, hand, Type::Hand)?;
|
write_message(conn, hand, Type::Hand)?;
|
||||||
let shake: Shake = read_message(conn, Type::Shake)?;
|
let shake: Shake = read_message(conn, Type::Shake)?;
|
||||||
if shake.version != PROTOCOL_VERSION {
|
if shake.genesis != self.genesis {
|
||||||
return Err(Error::ProtocolMismatch {
|
|
||||||
us: PROTOCOL_VERSION,
|
|
||||||
peer: shake.version,
|
|
||||||
});
|
|
||||||
} else if shake.genesis != self.genesis {
|
|
||||||
return Err(Error::GenesisMismatch {
|
return Err(Error::GenesisMismatch {
|
||||||
us: self.genesis,
|
us: self.genesis,
|
||||||
peer: shake.genesis,
|
peer: shake.genesis,
|
||||||
|
@ -132,12 +127,7 @@ impl Handshake {
|
||||||
let hand: Hand = read_message(conn, Type::Hand)?;
|
let hand: Hand = read_message(conn, Type::Hand)?;
|
||||||
|
|
||||||
// all the reasons we could refuse this connection for
|
// all the reasons we could refuse this connection for
|
||||||
if hand.version != PROTOCOL_VERSION {
|
if hand.genesis != self.genesis {
|
||||||
return Err(Error::ProtocolMismatch {
|
|
||||||
us: PROTOCOL_VERSION,
|
|
||||||
peer: hand.version,
|
|
||||||
});
|
|
||||||
} else if hand.genesis != self.genesis {
|
|
||||||
return Err(Error::GenesisMismatch {
|
return Err(Error::GenesisMismatch {
|
||||||
us: self.genesis,
|
us: self.genesis,
|
||||||
peer: hand.genesis,
|
peer: hand.genesis,
|
||||||
|
|
|
@ -28,7 +28,14 @@ use crate::types::{
|
||||||
};
|
};
|
||||||
use crate::util::read_write::read_exact;
|
use crate::util::read_write::read_exact;
|
||||||
|
|
||||||
/// Current latest version of the protocol
|
/// Our local node protocol version.
|
||||||
|
/// We will increment the protocol version with every change to p2p msg serialization
|
||||||
|
/// so we will likely connect with peers with both higher and lower protocol versions.
|
||||||
|
/// We need to be aware that some msg formats will be potentially incompatible and handle
|
||||||
|
/// this for each individual peer connection.
|
||||||
|
/// Note: A peer may disconnect and reconnect with an updated protocol version. Normally
|
||||||
|
/// the protocol version will increase but we need to handle decreasing values also
|
||||||
|
/// as a peer may rollback to previous version of the code.
|
||||||
pub const PROTOCOL_VERSION: u32 = 1;
|
pub const PROTOCOL_VERSION: u32 = 1;
|
||||||
|
|
||||||
/// Grin's user agent with current version
|
/// Grin's user agent with current version
|
||||||
|
|
|
@ -68,10 +68,6 @@ pub enum Error {
|
||||||
Chain(chain::Error),
|
Chain(chain::Error),
|
||||||
PeerWithSelf,
|
PeerWithSelf,
|
||||||
NoDandelionRelay,
|
NoDandelionRelay,
|
||||||
ProtocolMismatch {
|
|
||||||
us: u32,
|
|
||||||
peer: u32,
|
|
||||||
},
|
|
||||||
GenesisMismatch {
|
GenesisMismatch {
|
||||||
us: Hash,
|
us: Hash,
|
||||||
peer: Hash,
|
peer: Hash,
|
||||||
|
|
|
@ -402,6 +402,11 @@ impl Server {
|
||||||
self.chain.header_head().map_err(|e| e.into())
|
self.chain.header_head().map_err(|e| e.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Current p2p layer protocol version.
|
||||||
|
pub fn protocol_version() -> u32 {
|
||||||
|
p2p::msg::PROTOCOL_VERSION
|
||||||
|
}
|
||||||
|
|
||||||
/// Returns a set of stats about this server. This and the ServerStats
|
/// Returns a set of stats about this server. This and the ServerStats
|
||||||
/// structure
|
/// structure
|
||||||
/// can be updated over time to include any information needed by tests or
|
/// can be updated over time to include any information needed by tests or
|
||||||
|
|
|
@ -88,7 +88,11 @@ impl UI {
|
||||||
|
|
||||||
let mut title_string = StyledString::new();
|
let mut title_string = StyledString::new();
|
||||||
title_string.append(StyledString::styled(
|
title_string.append(StyledString::styled(
|
||||||
format!("Grin Version {}", built_info::PKG_VERSION),
|
format!(
|
||||||
|
"Grin Version {} (protocol version: {})",
|
||||||
|
built_info::PKG_VERSION,
|
||||||
|
Server::protocol_version()
|
||||||
|
),
|
||||||
Color::Dark(BaseColor::Green),
|
Color::Dark(BaseColor::Green),
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue