BDR: Linearizing secp256k1 deps
[rust-lightning] / lightning / src / ln / peer_handler.rs
index fc6d1cbcda13883864382bb0cb07d35e6c3e1d32..b99f2f522709dd56cbe01a5d441bb77f7892b255 100644 (file)
@@ -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<CM: Deref> where CM::Target: msgs::ChannelMessageHandler {
@@ -355,10 +355,14 @@ impl<Descriptor: SocketDescriptor, CM: Deref> PeerManager<Descriptor, CM> 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<Descriptor: SocketDescriptor, CM: Deref> PeerManager<Descriptor, CM> 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<msgs::ChannelUpdate>, Option<msgs::ChannelUpdate>)> {
                        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()),