From 3a7aae5188893e1f2f958ea00c115064e393669d Mon Sep 17 00:00:00 2001 From: Svyatoslav Nikolsky Date: Tue, 22 Nov 2016 18:11:46 +0300 Subject: [PATCH] fix after merge --- message/src/types/mod.rs | 1 + sync/src/connection_filter.rs | 25 +++++++++++++++++-------- sync/src/synchronization_server.rs | 2 +- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/message/src/types/mod.rs b/message/src/types/mod.rs index 914c0818..d6c0e865 100644 --- a/message/src/types/mod.rs +++ b/message/src/types/mod.rs @@ -31,6 +31,7 @@ pub use self::blocktxn::BlockTxn; pub use self::compactblock::CompactBlock; pub use self::feefilter::FeeFilter; pub use self::filterload::FilterLoad; +pub use self::filterload::FilterFlags; pub use self::filterclear::FilterClear; pub use self::filteradd::FilterAdd; pub use self::getaddr::GetAddr; diff --git a/sync/src/connection_filter.rs b/sync/src/connection_filter.rs index 63281748..54a5d41f 100644 --- a/sync/src/connection_filter.rs +++ b/sync/src/connection_filter.rs @@ -1,4 +1,4 @@ -#![allow(dead_code)] +#![allow(dead_code)] // TODO: remove after connecting with Client use bit_vec::BitVec; use murmur3::murmur3_32; @@ -7,16 +7,16 @@ use ser::serialize; use message::types; use script::Script; -/// Constant optimized to create large differences in the seed for different values of hash_functions_num. +/// Constant optimized to create large differences in the seed for different values of `hash_functions_num`. const SEED_OFFSET: u32 = 0xFBA4C795; /// Filter, which controls data relayed over connection. -#[derive(Debug, Default)] +#[derive(Debug)] pub struct ConnectionFilter { /// Bloom filter, if set. bloom: Option, /// Filter update type. - filter_flags: u8, + filter_flags: types::FilterFlags, } /// Connection bloom filter @@ -30,6 +30,15 @@ struct ConnectionBloom { tweak: u32, } +impl Default for ConnectionFilter { + fn default() -> Self { + ConnectionFilter { + bloom: None, + filter_flags: types::FilterFlags::None, + } + } +} + impl ConnectionFilter { #[cfg(test)] /// Create new connection with given filter params @@ -58,8 +67,8 @@ impl ConnectionFilter { if bloom.contains(instruction_data) { is_match = true; - let is_update_needed = self.filter_flags == 1 - || (self.filter_flags == 2 && (script.is_pay_to_public_key() || script.is_multisig_script())); + let is_update_needed = self.filter_flags == types::FilterFlags::All + || (self.filter_flags == types::FilterFlags::PubKeyOnly && (script.is_pay_to_public_key() || script.is_multisig_script())); if is_update_needed { bloom.insert(&serialize(&OutPoint { hash: transaction_hash.clone(), @@ -163,7 +172,7 @@ mod tests { use std::iter::{Iterator, repeat}; use test_data; use message::types; - use chain::{Transaction, RepresentH256}; + use chain::Transaction; use primitives::hash::H256; use primitives::bytes::Bytes; use super::{ConnectionFilter, ConnectionBloom}; @@ -173,7 +182,7 @@ mod tests { filter: Bytes::from(repeat(0u8).take(1024).collect::>()), hash_functions: 10, tweak: 5, - flags: 0, + flags: types::FilterFlags::None, } } diff --git a/sync/src/synchronization_server.rs b/sync/src/synchronization_server.rs index 63dc6006..67185ea9 100644 --- a/sync/src/synchronization_server.rs +++ b/sync/src/synchronization_server.rs @@ -365,7 +365,7 @@ impl Server for SynchronizationServer { fn serve_getheaders(&self, peer_index: usize, message: types::GetHeaders, id: Option) -> Option { if let Some(best_common_block) = self.locate_known_block_header(message.block_locator_hashes) { trace!(target: "sync", "Best common block header with peer#{} is block#{}: {:?}", peer_index, best_common_block.number, best_common_block.hash.to_reversed_str()); - let server_task_index = id.map_or_else(|| ServerTaskIndex::None, |id| ServerTaskIndex::Final(id)); + let server_task_index = id.map_or_else(|| ServerTaskIndex::None, ServerTaskIndex::Final); let task = IndexedServerTask::new(ServerTask::ServeGetHeaders(best_common_block, message.hash_stop), server_task_index); Some(task) }