fix after merge

This commit is contained in:
Svyatoslav Nikolsky 2016-11-22 18:11:46 +03:00
parent 5ba95a99c8
commit 3a7aae5188
3 changed files with 19 additions and 9 deletions

View File

@ -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;

View File

@ -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<ConnectionBloom>,
/// 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::<Vec<_>>()),
hash_functions: 10,
tweak: 5,
flags: 0,
flags: types::FilterFlags::None,
}
}

View File

@ -365,7 +365,7 @@ impl Server for SynchronizationServer {
fn serve_getheaders(&self, peer_index: usize, message: types::GetHeaders, id: Option<u32>) -> Option<IndexedServerTask> {
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)
}