X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fln%2Fpeer_handler.rs;h=b99f2f522709dd56cbe01a5d441bb77f7892b255;hb=eff8af21103e43f763cb10ae6a75c1543a2d4068;hp=fc6d1cbcda13883864382bb0cb07d35e6c3e1d32;hpb=3e0aed23a3d517161261be3c2e7e5ff83bca67e8;p=rust-lightning diff --git a/lightning/src/ln/peer_handler.rs b/lightning/src/ln/peer_handler.rs index fc6d1cbc..b99f2f52 100644 --- a/lightning/src/ln/peer_handler.rs +++ b/lightning/src/ln/peer_handler.rs @@ -6,7 +6,7 @@ //! call into the provided message handlers (probably a ChannelManager and Router) with messages //! they should handle, and encoding/sending response messages. -use secp256k1::key::{SecretKey,PublicKey}; +use bitcoin::secp256k1::key::{SecretKey,PublicKey}; use ln::features::InitFeatures; use ln::msgs; @@ -26,9 +26,9 @@ use std::sync::atomic::{AtomicUsize, Ordering}; use std::{cmp,error,hash,fmt}; use std::ops::Deref; -use bitcoin_hashes::sha256::Hash as Sha256; -use bitcoin_hashes::sha256::HashEngine as Sha256Engine; -use bitcoin_hashes::{HashEngine, Hash}; +use bitcoin::hashes::sha256::Hash as Sha256; +use bitcoin::hashes::sha256::HashEngine as Sha256Engine; +use bitcoin::hashes::{HashEngine, Hash}; /// Provides references to trait impls which handle different types of messages. pub struct MessageHandler where CM::Target: msgs::ChannelMessageHandler { @@ -355,10 +355,14 @@ impl PeerManager where InitSyncTracker::ChannelsSyncing(c) if c < 0xffff_ffff_ffff_ffff => { let steps = ((MSG_BUFF_SIZE - peer.pending_outbound_buffer.len() + 2) / 3) as u8; let all_messages = self.message_handler.route_handler.get_next_channel_announcements(c, steps); - for &(ref announce, ref update_a, ref update_b) in all_messages.iter() { + for &(ref announce, ref update_a_option, ref update_b_option) in all_messages.iter() { encode_and_send_msg!(announce); - encode_and_send_msg!(update_a); - encode_and_send_msg!(update_b); + if let &Some(ref update_a) = update_a_option { + encode_and_send_msg!(update_a); + } + if let &Some(ref update_b) = update_b_option { + encode_and_send_msg!(update_b); + } peer.sync_status = InitSyncTracker::ChannelsSyncing(announce.contents.short_channel_id + 1); } if all_messages.is_empty() || all_messages.len() != steps as usize { @@ -1149,7 +1153,7 @@ impl PeerManager where #[cfg(test)] mod tests { - use secp256k1::Signature; + use bitcoin::secp256k1::Signature; use bitcoin::BitcoinHash; use bitcoin::network::constants::Network; use bitcoin::blockdata::constants::genesis_block; @@ -1160,8 +1164,8 @@ mod tests { use util::test_utils; use util::logger::Logger; - use secp256k1::Secp256k1; - use secp256k1::key::{SecretKey, PublicKey}; + use bitcoin::secp256k1::Secp256k1; + use bitcoin::secp256k1::key::{SecretKey, PublicKey}; use rand::{thread_rng, Rng}; @@ -1313,7 +1317,7 @@ mod tests { Err(msgs::LightningError { err: "", action: msgs::ErrorAction::IgnoreError }) } fn handle_htlc_fail_channel_update(&self, _update: &msgs::HTLCFailChannelUpdate) {} - fn get_next_channel_announcements(&self, starting_point: u64, batch_amount: u8) -> Vec<(msgs::ChannelAnnouncement, msgs::ChannelUpdate,msgs::ChannelUpdate)> { + fn get_next_channel_announcements(&self, starting_point: u64, batch_amount: u8) -> Vec<(msgs::ChannelAnnouncement, Option, Option)> { let mut chan_anns = Vec::new(); const TOTAL_UPDS: u64 = 100; let end: u64 = min(starting_point + batch_amount as u64, TOTAL_UPDS - self.chan_anns_sent.load(Ordering::Acquire) as u64); @@ -1322,7 +1326,7 @@ mod tests { let chan_upd_2 = get_dummy_channel_update(i); let chan_ann = get_dummy_channel_announcement(i); - chan_anns.push((chan_ann, chan_upd_1, chan_upd_2)); + chan_anns.push((chan_ann, Some(chan_upd_1), Some(chan_upd_2))); } self.chan_anns_sent.fetch_add(chan_anns.len(), Ordering::AcqRel); @@ -1339,7 +1343,7 @@ mod tests { } fn get_dummy_channel_announcement(short_chan_id: u64) -> msgs::ChannelAnnouncement { - use secp256k1::ffi::Signature as FFISignature; + use bitcoin::secp256k1::ffi::Signature as FFISignature; let secp_ctx = Secp256k1::new(); let network = Network::Testnet; let node_1_privkey = SecretKey::from_slice(&[42; 32]).unwrap(); @@ -1367,7 +1371,7 @@ mod tests { } fn get_dummy_channel_update(short_chan_id: u64) -> msgs::ChannelUpdate { - use secp256k1::ffi::Signature as FFISignature; + use bitcoin::secp256k1::ffi::Signature as FFISignature; let network = Network::Testnet; msgs::ChannelUpdate { signature: Signature::from(FFISignature::new()),