Avoid persisting on same counterparty's ChannelUpdate
[rust-lightning] / lightning / src / ln / channelmanager.rs
index 392f3e1cb052cf196b50b2b7e3734b62ab167e4c..6b4f494efe2851186afb97bb10dd053505c6b40f 100644 (file)
@@ -6757,7 +6757,12 @@ where
                                                return Ok(NotifyOption::SkipPersistNoEvents);
                                        } else {
                                                log_debug!(self.logger, "Received channel_update {:?} for channel {}.", msg, chan_id);
-                                               try_chan_phase_entry!(self, chan.channel_update(&msg), chan_phase_entry);
+                                               let did_change = try_chan_phase_entry!(self, chan.channel_update(&msg), chan_phase_entry);
+                                               // If nothing changed after applying their update, we don't need to bother
+                                               // persisting.
+                                               if !did_change {
+                                                       return Ok(NotifyOption::SkipPersistNoEvents);
+                                               }
                                        }
                                } else {
                                        return try_chan_phase_entry!(self, Err(ChannelError::Close(