From: Arik Sosman Date: Sat, 14 Jan 2023 16:22:50 +0000 (-0800) Subject: Allow manually passing a timestamp to `channel_failed`. Fixes #1914. X-Git-Tag: v0.0.114-beta~64^2 X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=16deda07aaade26483329063bc41eee05331b9e1;p=rust-lightning Allow manually passing a timestamp to `channel_failed`. Fixes #1914. --- diff --git a/lightning/src/routing/gossip.rs b/lightning/src/routing/gossip.rs index d90e4c437..d31d08f5f 100644 --- a/lightning/src/routing/gossip.rs +++ b/lightning/src/routing/gossip.rs @@ -1541,6 +1541,14 @@ impl NetworkGraph where L::Target: Logger { #[cfg(not(feature = "std"))] let current_time_unix = None; + self.channel_failed_with_time(short_channel_id, is_permanent, current_time_unix) + } + + /// Marks a channel in the graph as failed if a corresponding HTLC fail was sent. + /// If permanent, removes a channel from the local storage. + /// May cause the removal of nodes too, if this was their last channel. + /// If not permanent, makes channels unavailable for routing. + fn channel_failed_with_time(&self, short_channel_id: u64, is_permanent: bool, current_time_unix: Option) { let mut channels = self.channels.write().unwrap(); if is_permanent { if let Some(chan) = channels.remove(&short_channel_id) { @@ -2537,7 +2545,7 @@ mod tests { // Mark the channel as permanently failed. This will also remove the two nodes // and all of the entries will be tracked as removed. - network_graph.channel_failed(short_channel_id, true); + network_graph.channel_failed_with_time(short_channel_id, true, Some(tracking_time)); // Should not remove from tracking if insufficient time has passed network_graph.remove_stale_channels_and_tracking_with_time(