Merge pull request #650 from TheBlueMatt/2020-06-fix-build
[rust-lightning] / lightning / src / ln / channelmonitor.rs
index 0b8f8c07862eeb8514bbea78e254059fc1b73a72..ce37944ca2f7bfd5224b562d3c1de64471b5c59c 100644 (file)
@@ -183,7 +183,7 @@ impl<Key : Send + cmp::Eq + hash::Hash, ChanSigner: ChannelKeys, T: Deref + Sync
              L::Target: Logger,
         C::Target: ChainWatchInterface,
 {
-       fn block_connected(&self, header: &BlockHeader, height: u32, txn_matched: &[&Transaction], _indexes_of_txn_matched: &[u32]) {
+       fn block_connected(&self, header: &BlockHeader, height: u32, txn_matched: &[&Transaction], _indexes_of_txn_matched: &[usize]) {
                let block_hash = header.bitcoin_hash();
                {
                        let mut monitors = self.monitors.lock().unwrap();
@@ -235,12 +235,15 @@ impl<Key : Send + cmp::Eq + hash::Hash + 'static, ChanSigner: ChannelKeys, T: De
                        hash_map::Entry::Occupied(_) => return Err(MonitorUpdateError("Channel monitor for given key is already present")),
                        hash_map::Entry::Vacant(e) => e,
                };
-               log_trace!(self.logger, "Got new Channel Monitor for channel {}", log_bytes!(monitor.funding_info.0.to_channel_id()[..]));
-               self.chain_monitor.install_watch_tx(&monitor.funding_info.0.txid, &monitor.funding_info.1);
-               self.chain_monitor.install_watch_outpoint((monitor.funding_info.0.txid, monitor.funding_info.0.index as u32), &monitor.funding_info.1);
-               for (txid, outputs) in monitor.get_outputs_to_watch().iter() {
-                       for (idx, script) in outputs.iter().enumerate() {
-                               self.chain_monitor.install_watch_outpoint((*txid, idx as u32), script);
+               {
+                       let funding_txo = monitor.get_funding_txo();
+                       log_trace!(self.logger, "Got new Channel Monitor for channel {}", log_bytes!(funding_txo.0.to_channel_id()[..]));
+                       self.chain_monitor.install_watch_tx(&funding_txo.0.txid, &funding_txo.1);
+                       self.chain_monitor.install_watch_outpoint((funding_txo.0.txid, funding_txo.0.index as u32), &funding_txo.1);
+                       for (txid, outputs) in monitor.get_outputs_to_watch().iter() {
+                               for (idx, script) in outputs.iter().enumerate() {
+                                       self.chain_monitor.install_watch_outpoint((*txid, idx as u32), script);
+                               }
                        }
                }
                entry.insert(monitor);
@@ -1408,8 +1411,8 @@ impl<ChanSigner: ChannelKeys> ChannelMonitor<ChanSigner> {
        }
 
        /// Gets the funding transaction outpoint of the channel this ChannelMonitor is monitoring for.
-       pub fn get_funding_txo(&self) -> OutPoint {
-               self.funding_info.0
+       pub fn get_funding_txo(&self) -> &(OutPoint, Script) {
+               &self.funding_info
        }
 
        /// Gets a list of txids, with their output scripts (in the order they appear in the
@@ -2544,7 +2547,6 @@ mod tests {
        use util::test_utils::TestLogger;
        use bitcoin::secp256k1::key::{SecretKey,PublicKey};
        use bitcoin::secp256k1::Secp256k1;
-       use rand::{thread_rng,Rng};
        use std::sync::Arc;
        use chain::keysinterface::InMemoryChannelKeys;
 
@@ -2558,10 +2560,8 @@ mod tests {
 
                let mut preimages = Vec::new();
                {
-                       let mut rng  = thread_rng();
-                       for _ in 0..20 {
-                               let mut preimage = PaymentPreimage([0; 32]);
-                               rng.fill_bytes(&mut preimage.0[..]);
+                       for i in 0..20 {
+                               let preimage = PaymentPreimage([i; 32]);
                                let hash = PaymentHash(Sha256::hash(&preimage.0[..]).into_inner());
                                preimages.push((preimage, hash));
                        }