X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning-invoice%2Fsrc%2Futils.rs;h=d42bc503f05df6679db447ac0ddf9c29ee927320;hb=7adf2c7f5f1e1c4a72108dcc30899a6ed6964c76;hp=04cfb3f147099181b37ed8e6dee70d989f983233;hpb=8e5cf757717398bb8a3dd83dd751c8065ac5aebe;p=rust-lightning diff --git a/lightning-invoice/src/utils.rs b/lightning-invoice/src/utils.rs index 04cfb3f1..d42bc503 100644 --- a/lightning-invoice/src/utils.rs +++ b/lightning-invoice/src/utils.rs @@ -440,13 +440,13 @@ fn filter_channels(channels: Vec, min_inbound_capacity_msat: Opt } /// A [`Router`] implemented using [`find_route`]. -pub struct DefaultRouter, L: Deref> where L::Target: Logger { +pub struct DefaultRouter>, L: Deref> where L::Target: Logger { network_graph: G, logger: L, random_seed_bytes: Mutex<[u8; 32]>, } -impl, L: Deref> DefaultRouter where L::Target: Logger { +impl>, L: Deref> DefaultRouter where L::Target: Logger { /// Creates a new router using the given [`NetworkGraph`], a [`Logger`], and a randomness source /// `random_seed_bytes`. pub fn new(network_graph: G, logger: L, random_seed_bytes: [u8; 32]) -> Self { @@ -455,18 +455,19 @@ impl, L: Deref> DefaultRouter where L::Tar } } -impl, L: Deref, S: Score> Router for DefaultRouter +impl>, L: Deref, S: Score> Router for DefaultRouter where L::Target: Logger { fn find_route( &self, payer: &PublicKey, params: &RouteParameters, _payment_hash: &PaymentHash, first_hops: Option<&[&ChannelDetails]>, scorer: &S ) -> Result { + let network_graph = self.network_graph.read_only(); let random_seed_bytes = { let mut locked_random_seed_bytes = self.random_seed_bytes.lock().unwrap(); *locked_random_seed_bytes = sha256::Hash::hash(&*locked_random_seed_bytes).into_inner(); *locked_random_seed_bytes }; - find_route(payer, params, &*self.network_graph, first_hops, &*self.logger, scorer, &random_seed_bytes) + find_route(payer, params, &network_graph, first_hops, &*self.logger, scorer, &random_seed_bytes) } } @@ -566,12 +567,12 @@ mod test { final_cltv_expiry_delta: invoice.min_final_cltv_expiry() as u32, }; let first_hops = nodes[0].node.list_usable_channels(); - let network_graph = node_cfgs[0].network_graph; + let network_graph = &node_cfgs[0].network_graph; let logger = test_utils::TestLogger::new(); let scorer = test_utils::TestScorer::with_penalty(0); let random_seed_bytes = chanmon_cfgs[1].keys_manager.get_secure_random_bytes(); let route = find_route( - &nodes[0].node.get_our_node_id(), &route_params, network_graph, + &nodes[0].node.get_our_node_id(), &route_params, &network_graph.read_only(), Some(&first_hops.iter().collect::>()), &logger, &scorer, &random_seed_bytes ).unwrap(); @@ -842,12 +843,12 @@ mod test { final_cltv_expiry_delta: invoice.min_final_cltv_expiry() as u32, }; let first_hops = nodes[0].node.list_usable_channels(); - let network_graph = node_cfgs[0].network_graph; + let network_graph = &node_cfgs[0].network_graph; let logger = test_utils::TestLogger::new(); let scorer = test_utils::TestScorer::with_penalty(0); let random_seed_bytes = chanmon_cfgs[1].keys_manager.get_secure_random_bytes(); let route = find_route( - &nodes[0].node.get_our_node_id(), ¶ms, network_graph, + &nodes[0].node.get_our_node_id(), ¶ms, &network_graph.read_only(), Some(&first_hops.iter().collect::>()), &logger, &scorer, &random_seed_bytes ).unwrap(); let (payment_event, fwd_idx) = {