mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-01-19 05:43:55 +01:00
Add an additional variant to handle_new_monitor_update!
In d1c340a0e1
we added support in
`handle_new_monitor_update!` for handling updates without dropping
locks.
In the coming commits we'll start handling `ChannelMonitorUpdate`s
"like normal" for updates against closed channels. Here we set up
the first step by adding a new `POST_CHANNEL_CLOSE` variant on
`handle_new_monitor_update!` which attempts to handle the
`ChannelMonitorUpdate` and handles completion actions if it
finishes immediately, just like the pre-close variant.
This commit is contained in:
parent
1481216793
commit
3395938771
@ -3339,6 +3339,27 @@ macro_rules! handle_new_monitor_update {
|
||||
let _ = in_flight_updates.remove(idx);
|
||||
})
|
||||
} };
|
||||
(
|
||||
$self: ident, $funding_txo: expr, $update: expr, $peer_state_lock: expr, $peer_state: expr,
|
||||
$per_peer_state_lock: expr, $logger: expr, $channel_id: expr, POST_CHANNEL_CLOSE
|
||||
) => { {
|
||||
let in_flight_updates;
|
||||
let idx;
|
||||
handle_new_monitor_update!($self, $funding_txo, $update, $peer_state, $logger,
|
||||
$channel_id, in_flight_updates, idx, _internal_outer,
|
||||
{
|
||||
let _ = in_flight_updates.remove(idx);
|
||||
if in_flight_updates.is_empty() {
|
||||
let update_actions = $peer_state.monitor_update_blocked_actions
|
||||
.remove(&$channel_id).unwrap_or(Vec::new());
|
||||
|
||||
mem::drop($peer_state_lock);
|
||||
mem::drop($per_peer_state_lock);
|
||||
|
||||
$self.handle_monitor_update_completion_actions(update_actions);
|
||||
}
|
||||
})
|
||||
} };
|
||||
(
|
||||
$self: ident, $funding_txo: expr, $update: expr, $peer_state_lock: expr, $peer_state: expr,
|
||||
$per_peer_state_lock: expr, $chan: expr
|
||||
|
Loading…
Reference in New Issue
Block a user