HTLC Failure message handling
[rust-lightning] / src / ln / router.rs
index 75df79450f3507d80969ee0eb186a3a8022d28f6..19a677580a5c101fe08e78d52ac17dbee4dc0ffe 100644 (file)
@@ -51,9 +51,9 @@ struct ChannelInfo {
 
 struct NodeInfo {
        #[cfg(feature = "non_bitcoin_chain_hash_routing")]
-    channels: Vec<(u64, Sha256dHash)>,
+       channels: Vec<(u64, Sha256dHash)>,
        #[cfg(not(feature = "non_bitcoin_chain_hash_routing"))]
-    channels: Vec<u64>,
+       channels: Vec<u64>,
 
        lowest_inbound_channel_fee_base_msat: u32,
        lowest_inbound_channel_fee_proportional_millionths: u32,
@@ -214,6 +214,18 @@ impl RoutingMessageHandler for Router {
                Ok(!msg.contents.features.supports_unknown_bits())
        }
 
+       fn handle_htlc_fail_channel_update(&self, update: &msgs::HTLCFailChannelUpdate) {
+               match update {
+                       &msgs::HTLCFailChannelUpdate::ChannelUpdateMessage { ref msg } => {
+                               let _ = self.handle_channel_update(msg);
+                       },
+                       &msgs::HTLCFailChannelUpdate::ChannelClosed { ref short_channel_id } => {
+                               let mut network = self.network_map.write().unwrap();
+                               network.channels.remove(short_channel_id);
+                       },
+               }
+       }
+
        fn handle_channel_update(&self, msg: &msgs::ChannelUpdate) -> Result<(), HandleError> {
                let mut network = self.network_map.write().unwrap();
                let dest_node_id;