Immediately error in `close_channel_internal` if there is no chan 2023-11-chan-close-loop
authorMatt Corallo <git@bluematt.me>
Wed, 29 Nov 2023 06:02:46 +0000 (06:02 +0000)
committerMatt Corallo <git@bluematt.me>
Fri, 8 Dec 2023 02:26:00 +0000 (02:26 +0000)
Previously, unfunded channels would be stored outside of
`PeerState::channel_by_id`, and thus if there is no channel when
we look in `PeerState::channel_by_id`, `close_channel_internal`
called `force_close_channel_with_peer` to hunt for unfunded
channels.

However, that is no longer the case, so the call is redundant, and
we can simply return an error instead.

lightning/src/ln/channelmanager.rs

index a74dbbfe4ceee417cd3d1555a0634b5e2f9bccdb..7c6ee1e429c1d1a325759d22c0a73207fa50d730 100644 (file)
@@ -2758,13 +2758,12 @@ where
                                        }
                                },
                                hash_map::Entry::Vacant(_) => {
-                                       // If we reach this point, it means that the channel_id either refers to an unfunded channel or
-                                       // it does not exist for this peer. Either way, we can attempt to force-close it.
-                                       //
-                                       // An appropriate error will be returned for non-existence of the channel if that's the case.
-                                       mem::drop(peer_state_lock);
-                                       mem::drop(per_peer_state);
-                                       return self.force_close_channel_with_peer(&channel_id, counterparty_node_id, None, false).map(|_| ())
+                                       return Err(APIError::ChannelUnavailable {
+                                               err: format!(
+                                                       "Channel with id {} not found for the passed counterparty node_id {}",
+                                                       channel_id, counterparty_node_id,
+                                               )
+                                       });
                                },
                        }
                }