Merge pull request #371 from ethcore/pass_version_to_sync
Pass version message to sync when starting sync session
This commit is contained in:
commit
9c196ba47e
|
@ -6,7 +6,7 @@ use ser::{
|
|||
};
|
||||
use common::{Port, IpAddress, Services};
|
||||
|
||||
#[derive(Debug, Default, PartialEq)]
|
||||
#[derive(Debug, Default, PartialEq, Clone)]
|
||||
pub struct NetAddress {
|
||||
pub services: Services,
|
||||
pub address: IpAddress,
|
||||
|
|
|
@ -8,7 +8,7 @@ use common::{NetAddress, Services};
|
|||
use {Payload, MessageResult};
|
||||
use serialization::deserialize_payload;
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
pub enum Version {
|
||||
V0(V0),
|
||||
V106(V0, V106),
|
||||
|
@ -94,7 +94,7 @@ impl Version {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, PartialEq)]
|
||||
#[derive(Debug, Default, PartialEq, Clone)]
|
||||
pub struct V0 {
|
||||
pub version: u32,
|
||||
pub services: Services,
|
||||
|
@ -102,7 +102,7 @@ pub struct V0 {
|
|||
pub receiver: NetAddress,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
pub struct V106 {
|
||||
pub from: NetAddress,
|
||||
pub nonce: u64,
|
||||
|
@ -110,7 +110,7 @@ pub struct V106 {
|
|||
pub start_height: i32,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
pub struct V70001 {
|
||||
pub relay: bool,
|
||||
}
|
||||
|
|
|
@ -36,9 +36,10 @@ impl Future for AcceptConnection {
|
|||
};
|
||||
let connection = Connection {
|
||||
stream: stream.into(),
|
||||
version: result.negotiated_version,
|
||||
magic: self.magic,
|
||||
services: result.version.services(),
|
||||
version: result.negotiated_version,
|
||||
version_message: result.version,
|
||||
magic: self.magic,
|
||||
address: self.address,
|
||||
};
|
||||
Ok(Ok(connection).into())
|
||||
|
|
|
@ -60,9 +60,10 @@ impl Future for Connect {
|
|||
};
|
||||
let connection = Connection {
|
||||
stream: stream.into(),
|
||||
version: result.negotiated_version,
|
||||
magic: self.magic,
|
||||
services: result.version.services(),
|
||||
version: result.negotiated_version,
|
||||
version_message: result.version,
|
||||
magic: self.magic,
|
||||
address: self.address,
|
||||
};
|
||||
(ConnectState::Connected, Async::Ready(Ok(connection)))
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
use std::net;
|
||||
use network::Magic;
|
||||
use message::common::Services;
|
||||
use message::types;
|
||||
use io::SharedTcpStream;
|
||||
|
||||
pub struct Connection {
|
||||
pub stream: SharedTcpStream,
|
||||
pub version: u32,
|
||||
pub version_message: types::Version,
|
||||
pub magic: Magic,
|
||||
pub services: Services,
|
||||
pub address: net::SocketAddr,
|
||||
|
|
|
@ -55,6 +55,7 @@ impl Connections {
|
|||
address: connection.address,
|
||||
direction: direction,
|
||||
version: connection.version,
|
||||
version_message: connection.version_message,
|
||||
magic: connection.magic,
|
||||
};
|
||||
|
||||
|
|
|
@ -181,20 +181,7 @@ impl SyncProtocol {
|
|||
|
||||
impl Protocol for SyncProtocol {
|
||||
fn initialize(&mut self) {
|
||||
// TODO
|
||||
use message::common;
|
||||
let version = types::Version::V0(types::version::V0 {
|
||||
version: self.context.info().version,
|
||||
services: common::Services::default(),
|
||||
timestamp: 0,
|
||||
receiver: common::NetAddress {
|
||||
services: common::Services::default(),
|
||||
address: common::IpAddress::from("127.0.0.1"),
|
||||
port: common::Port::from(0),
|
||||
},
|
||||
});
|
||||
|
||||
self.inbound_connection.start_sync_session(version);
|
||||
self.inbound_connection.start_sync_session(self.context.info().version_message.clone());
|
||||
}
|
||||
|
||||
fn on_message(&mut self, command: &Command, payload: &Bytes) -> Result<(), Error> {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
use std::net::SocketAddr;
|
||||
use message::types;
|
||||
use network::Magic;
|
||||
|
||||
pub type PeerId = usize;
|
||||
|
@ -9,12 +10,13 @@ pub enum Direction {
|
|||
Outbound,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Eq, Clone)]
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
pub struct PeerInfo {
|
||||
pub id: PeerId,
|
||||
pub address: SocketAddr,
|
||||
pub direction: Direction,
|
||||
pub version: u32,
|
||||
pub version_message: types::Version,
|
||||
pub magic: Magic,
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue