@@ -9105,53 +9105,51 @@ This indicates a bug inside LDK. Please report this error at https://github.com/
9105
9105
let per_peer_state = self.per_peer_state.read().unwrap();
9106
9106
9107
9107
let mut cursor = io::Cursor::new(decrypted);
9108
- match <PeerStorageMonitorHolderList as Readable>::read(&mut cursor) {
9109
- Ok(mon_list) => {
9110
- for mon_holder in mon_list.monitors.iter() {
9111
- let peer_state_mutex =
9112
- match per_peer_state.get(&mon_holder.counterparty_node_id) {
9113
- Some(mutex) => mutex,
9114
- None => {
9115
- log_debug!(
9116
- logger,
9117
- "Not able to find peer_state for the counterparty {}, channelId {}",
9118
- log_pubkey!(mon_holder.counterparty_node_id),
9119
- mon_holder.channel_id
9120
- );
9121
- continue;
9122
- },
9123
- };
9108
+ let mon_list = <PeerStorageMonitorHolderList as Readable>::read(&mut cursor).unwrap_or_else(|e| {
9109
+ // This should NEVER happen.
9110
+ log_debug!(self.logger, "Unable to unpack the retrieved peer storage {:?}", e);
9111
+ PeerStorageMonitorHolderList { monitors: Vec::new() }
9112
+ });
9124
9113
9125
- let peer_state_lock = peer_state_mutex.lock().unwrap();
9126
- let peer_state = &*peer_state_lock;
9114
+ for mon_holder in mon_list.monitors.iter() {
9115
+ let peer_state_mutex =
9116
+ match per_peer_state.get(&mon_holder.counterparty_node_id) {
9117
+ Some(mutex) => mutex,
9118
+ None => {
9119
+ log_debug!(
9120
+ logger,
9121
+ "Not able to find peer_state for the counterparty {}, channelId {}",
9122
+ log_pubkey!(mon_holder.counterparty_node_id),
9123
+ mon_holder.channel_id
9124
+ );
9125
+ continue;
9126
+ },
9127
+ };
9127
9128
9128
- match peer_state.channel_by_id.get(&mon_holder.channel_id) {
9129
- Some(chan) => {
9130
- if let Some(funded_chan) = chan.as_funded() {
9131
- if funded_chan
9132
- .get_revoked_counterparty_commitment_transaction_number()
9133
- > mon_holder.min_seen_secret
9134
- {
9135
- panic!(
9136
- "Lost channel state for channel {}.
9137
- Received peer storage with a more recent state than what our node had.
9138
- Use the FundRecoverer to initiate a force close and sweep the funds.",
9139
- &mon_holder.channel_id
9140
- );
9141
- }
9142
- }
9143
- },
9144
- None => {
9145
- // TODO: Figure out if this channel is so old that we have forgotten about it.
9146
- panic!("Lost a channel {}", &mon_holder.channel_id);
9147
- },
9148
- }
9149
- }
9150
- },
9129
+ let peer_state_lock = peer_state_mutex.lock().unwrap();
9130
+ let peer_state = &*peer_state_lock;
9151
9131
9152
- Err(e) => {
9153
- panic!("Wrong serialisation of PeerStorageMonitorHolderList: {}", e);
9154
- },
9132
+ match peer_state.channel_by_id.get(&mon_holder.channel_id) {
9133
+ Some(chan) => {
9134
+ if let Some(funded_chan) = chan.as_funded() {
9135
+ if funded_chan
9136
+ .get_revoked_counterparty_commitment_transaction_number()
9137
+ > mon_holder.min_seen_secret
9138
+ {
9139
+ panic!(
9140
+ "Lost channel state for channel {}.
9141
+ Received peer storage with a more recent state than what our node had.
9142
+ Use the FundRecoverer to initiate a force close and sweep the funds.",
9143
+ &mon_holder.channel_id
9144
+ );
9145
+ }
9146
+ }
9147
+ },
9148
+ None => {
9149
+ // TODO: Figure out if this channel is so old that we have forgotten about it.
9150
+ panic!("Lost a channel {}", &mon_holder.channel_id);
9151
+ },
9152
+ }
9155
9153
}
9156
9154
Ok(())
9157
9155
}
0 commit comments