fix after merge
This commit is contained in:
parent
5ba95a99c8
commit
3a7aae5188
|
@ -31,6 +31,7 @@ pub use self::blocktxn::BlockTxn;
|
||||||
pub use self::compactblock::CompactBlock;
|
pub use self::compactblock::CompactBlock;
|
||||||
pub use self::feefilter::FeeFilter;
|
pub use self::feefilter::FeeFilter;
|
||||||
pub use self::filterload::FilterLoad;
|
pub use self::filterload::FilterLoad;
|
||||||
|
pub use self::filterload::FilterFlags;
|
||||||
pub use self::filterclear::FilterClear;
|
pub use self::filterclear::FilterClear;
|
||||||
pub use self::filteradd::FilterAdd;
|
pub use self::filteradd::FilterAdd;
|
||||||
pub use self::getaddr::GetAddr;
|
pub use self::getaddr::GetAddr;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)] // TODO: remove after connecting with Client
|
||||||
|
|
||||||
use bit_vec::BitVec;
|
use bit_vec::BitVec;
|
||||||
use murmur3::murmur3_32;
|
use murmur3::murmur3_32;
|
||||||
|
@ -7,16 +7,16 @@ use ser::serialize;
|
||||||
use message::types;
|
use message::types;
|
||||||
use script::Script;
|
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;
|
const SEED_OFFSET: u32 = 0xFBA4C795;
|
||||||
|
|
||||||
/// Filter, which controls data relayed over connection.
|
/// Filter, which controls data relayed over connection.
|
||||||
#[derive(Debug, Default)]
|
#[derive(Debug)]
|
||||||
pub struct ConnectionFilter {
|
pub struct ConnectionFilter {
|
||||||
/// Bloom filter, if set.
|
/// Bloom filter, if set.
|
||||||
bloom: Option<ConnectionBloom>,
|
bloom: Option<ConnectionBloom>,
|
||||||
/// Filter update type.
|
/// Filter update type.
|
||||||
filter_flags: u8,
|
filter_flags: types::FilterFlags,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Connection bloom filter
|
/// Connection bloom filter
|
||||||
|
@ -30,6 +30,15 @@ struct ConnectionBloom {
|
||||||
tweak: u32,
|
tweak: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Default for ConnectionFilter {
|
||||||
|
fn default() -> Self {
|
||||||
|
ConnectionFilter {
|
||||||
|
bloom: None,
|
||||||
|
filter_flags: types::FilterFlags::None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl ConnectionFilter {
|
impl ConnectionFilter {
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
/// Create new connection with given filter params
|
/// Create new connection with given filter params
|
||||||
|
@ -58,8 +67,8 @@ impl ConnectionFilter {
|
||||||
if bloom.contains(instruction_data) {
|
if bloom.contains(instruction_data) {
|
||||||
is_match = true;
|
is_match = true;
|
||||||
|
|
||||||
let is_update_needed = self.filter_flags == 1
|
let is_update_needed = self.filter_flags == types::FilterFlags::All
|
||||||
|| (self.filter_flags == 2 && (script.is_pay_to_public_key() || script.is_multisig_script()));
|
|| (self.filter_flags == types::FilterFlags::PubKeyOnly && (script.is_pay_to_public_key() || script.is_multisig_script()));
|
||||||
if is_update_needed {
|
if is_update_needed {
|
||||||
bloom.insert(&serialize(&OutPoint {
|
bloom.insert(&serialize(&OutPoint {
|
||||||
hash: transaction_hash.clone(),
|
hash: transaction_hash.clone(),
|
||||||
|
@ -163,7 +172,7 @@ mod tests {
|
||||||
use std::iter::{Iterator, repeat};
|
use std::iter::{Iterator, repeat};
|
||||||
use test_data;
|
use test_data;
|
||||||
use message::types;
|
use message::types;
|
||||||
use chain::{Transaction, RepresentH256};
|
use chain::Transaction;
|
||||||
use primitives::hash::H256;
|
use primitives::hash::H256;
|
||||||
use primitives::bytes::Bytes;
|
use primitives::bytes::Bytes;
|
||||||
use super::{ConnectionFilter, ConnectionBloom};
|
use super::{ConnectionFilter, ConnectionBloom};
|
||||||
|
@ -173,7 +182,7 @@ mod tests {
|
||||||
filter: Bytes::from(repeat(0u8).take(1024).collect::<Vec<_>>()),
|
filter: Bytes::from(repeat(0u8).take(1024).collect::<Vec<_>>()),
|
||||||
hash_functions: 10,
|
hash_functions: 10,
|
||||||
tweak: 5,
|
tweak: 5,
|
||||||
flags: 0,
|
flags: types::FilterFlags::None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -365,7 +365,7 @@ impl Server for SynchronizationServer {
|
||||||
fn serve_getheaders(&self, peer_index: usize, message: types::GetHeaders, id: Option<u32>) -> Option<IndexedServerTask> {
|
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) {
|
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());
|
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);
|
let task = IndexedServerTask::new(ServerTask::ServeGetHeaders(best_common_block, message.hash_stop), server_task_index);
|
||||||
Some(task)
|
Some(task)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue