Handle Error messages by closing channels as required by BOLT 1
[rust-lightning] / src / ln / channelmanager.rs
index a360c376a16282f450c2b7b8dc62f10547e89f98..3a98cd5a17647fb5a4a036abf5814411018bed22 100644 (file)
@@ -2053,6 +2053,18 @@ impl ChannelMessageHandler for ChannelManager {
                        }
                }
        }
+
+       fn handle_error(&self, their_node_id: &PublicKey, msg: &msgs::ErrorMessage) {
+               if msg.channel_id == [0; 32] {
+                       for chan in self.list_channels() {
+                               if chan.remote_network_id == *their_node_id {
+                                       self.force_close_channel(&chan.channel_id);
+                               }
+                       }
+               } else {
+                       self.force_close_channel(&msg.channel_id);
+               }
+       }
 }
 
 #[cfg(test)]