From: Matt Corallo Date: Tue, 24 Jul 2018 01:51:19 +0000 (-0400) Subject: Short-circuit router for an outbound specified direct channel X-Git-Tag: v0.0.12~372^2 X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=ccf18e1b47f7f3b5134f3a73dfa2bf56c13fd762;p=rust-lightning Short-circuit router for an outbound specified direct channel --- diff --git a/src/ln/router.rs b/src/ln/router.rs index 9e3272c13..0ee6450fa 100644 --- a/src/ln/router.rs +++ b/src/ln/router.rs @@ -403,7 +403,18 @@ impl Router { let mut first_hop_targets = HashMap::with_capacity(if first_hops.is_some() { first_hops.as_ref().unwrap().len() } else { 0 }); if let Some(hops) = first_hops { for chan in hops { - first_hop_targets.insert(chan.remote_network_id, chan.short_channel_id.expect("first_hops should be filled in with usable channels, not pending ones")); + let short_channel_id = chan.short_channel_id.expect("first_hops should be filled in with usable channels, not pending ones"); + if chan.remote_network_id == *target { + return Ok(Route { + hops: vec![RouteHop { + pubkey: chan.remote_network_id, + short_channel_id, + fee_msat: final_value_msat, + cltv_expiry_delta: final_cltv, + }], + }); + } + first_hop_targets.insert(chan.remote_network_id, short_channel_id); } if first_hop_targets.is_empty() { return Err(HandleError{err: "Cannot route when there are no outbound routes away from us", action: None});