- if let hash_map::Entry::Vacant(entry) = bump_candidates.entry(ancestor_claim_txid.clone()) {
- entry.insert(cached_claim_datas.clone());
- }
- }
- }
- for ref mut cached_claim_datas in bump_candidates.values_mut() {
- if let Some((new_timer, new_feerate, bump_tx)) = self.bump_claim_tx(height, &cached_claim_datas, fee_estimator) {
- cached_claim_datas.height_timer = new_timer;
- cached_claim_datas.feerate_previous = new_feerate;
- broadcaster.broadcast_transaction(&bump_tx);
+ bump_candidates.insert(first_claim_txid.clone());
+ }
+ }
+ for first_claim_txid in bump_candidates.iter() {
+ if let Some((new_timer, new_feerate)) = {
+ if let Some(claim_material) = self.pending_claim_requests.get(first_claim_txid) {
+ if let Some((new_timer, new_feerate, bump_tx)) = self.bump_claim_tx(height, &claim_material, fee_estimator) {
+ broadcaster.broadcast_transaction(&bump_tx);
+ Some((new_timer, new_feerate))
+ } else { None }
+ } else { unreachable!(); }
+ } {
+ if let Some(claim_material) = self.pending_claim_requests.get_mut(first_claim_txid) {
+ claim_material.height_timer = new_timer;
+ claim_material.feerate_previous = new_feerate;
+ } else { unreachable!(); }