@@ -1127,15 +1127,15 @@ impl<ChannelSigner: EcdsaChannelSigner> OnchainTxHandler<ChannelSigner> {
1127
1127
}
1128
1128
1129
1129
if let Some ( height) = height {
1130
- self . block_disconnected (
1131
- height, broadcaster, conf_target, destination_script, fee_estimator, logger,
1130
+ self . blocks_disconnected (
1131
+ height - 1 , broadcaster, conf_target, destination_script, fee_estimator, logger,
1132
1132
) ;
1133
1133
}
1134
1134
}
1135
1135
1136
1136
#[ rustfmt:: skip]
1137
- pub ( super ) fn block_disconnected < B : Deref , F : Deref , L : Logger > (
1138
- & mut self , height : u32 , broadcaster : B , conf_target : ConfirmationTarget ,
1137
+ pub ( super ) fn blocks_disconnected < B : Deref , F : Deref , L : Logger > (
1138
+ & mut self , new_best_height : u32 , broadcaster : B , conf_target : ConfirmationTarget ,
1139
1139
destination_script : & Script , fee_estimator : & LowerBoundedFeeEstimator < F > , logger : & L ,
1140
1140
)
1141
1141
where B :: Target : BroadcasterInterface ,
@@ -1145,21 +1145,21 @@ impl<ChannelSigner: EcdsaChannelSigner> OnchainTxHandler<ChannelSigner> {
1145
1145
let onchain_events_awaiting_threshold_conf =
1146
1146
self . onchain_events_awaiting_threshold_conf . drain ( ..) . collect :: < Vec < _ > > ( ) ;
1147
1147
for entry in onchain_events_awaiting_threshold_conf {
1148
- if entry. height >= height {
1148
+ if entry. height > new_best_height {
1149
1149
//- our claim tx on a commitment tx output
1150
1150
//- resurect outpoint back in its claimable set and regenerate tx
1151
1151
match entry. event {
1152
1152
OnchainEvent :: ContentiousOutpoint { package } => {
1153
1153
// We pass 0 to `package_locktime` to get the actual required locktime.
1154
1154
let package_locktime = package. package_locktime ( 0 ) ;
1155
- if package_locktime >= height {
1155
+ if package_locktime > new_best_height {
1156
1156
self . locktimed_packages . entry ( package_locktime) . or_default ( ) . push ( package) ;
1157
1157
continue ;
1158
1158
}
1159
1159
1160
1160
if let Some ( pending_claim) = self . claimable_outpoints . get ( package. outpoints ( ) [ 0 ] ) {
1161
1161
if let Some ( request) = self . pending_claim_requests . get_mut ( & pending_claim. 0 ) {
1162
- assert ! ( request. merge_package( package, height ) . is_ok( ) ) ;
1162
+ assert ! ( request. merge_package( package, new_best_height + 1 ) . is_ok( ) ) ;
1163
1163
// Using a HashMap guarantee us than if we have multiple outpoints getting
1164
1164
// resurrected only one bump claim tx is going to be broadcast
1165
1165
bump_candidates. insert ( pending_claim. clone ( ) , request. clone ( ) ) ;
@@ -1173,10 +1173,8 @@ impl<ChannelSigner: EcdsaChannelSigner> OnchainTxHandler<ChannelSigner> {
1173
1173
}
1174
1174
}
1175
1175
for ( ( _claim_id, _) , ref mut request) in bump_candidates. iter_mut ( ) {
1176
- // `height` is the height being disconnected, so our `current_height` is 1 lower.
1177
- let current_height = height - 1 ;
1178
1176
if let Some ( ( new_timer, new_feerate, bump_claim) ) = self . generate_claim (
1179
- current_height , & request, & FeerateStrategy :: ForceBump , conf_target,
1177
+ new_best_height , & request, & FeerateStrategy :: ForceBump , conf_target,
1180
1178
destination_script, fee_estimator, logger
1181
1179
) {
1182
1180
request. set_timer ( new_timer) ;
@@ -1210,9 +1208,9 @@ impl<ChannelSigner: EcdsaChannelSigner> OnchainTxHandler<ChannelSigner> {
1210
1208
// right now if one of the outpoint get disconnected, just erase whole pending claim request.
1211
1209
let mut remove_request = Vec :: new ( ) ;
1212
1210
self . claimable_outpoints . retain ( |_, ref v|
1213
- if v. 1 >= height {
1214
- remove_request. push ( v. 0 . clone ( ) ) ;
1215
- false
1211
+ if v. 1 > new_best_height {
1212
+ remove_request. push ( v. 0 . clone ( ) ) ;
1213
+ false
1216
1214
} else { true } ) ;
1217
1215
for req in remove_request {
1218
1216
self . pending_claim_requests . remove ( & req) ;
0 commit comments