- // Check their_channel_reserve_satoshis:
- if htlc_inbound_value_msat + htlc_outbound_value_msat + amount_msat + (self.channel_value_satoshis * 1000 - self.value_to_self_msat) > (self.channel_value_satoshis - self.their_channel_reserve_satoshis) * 1000 {
+
+ let mut holding_cell_outbound_amount_msat = 0;
+ for holding_htlc in self.holding_cell_htlc_updates.iter() {
+ match holding_htlc {
+ &HTLCUpdateAwaitingACK::AddHTLC { ref amount_msat, .. } => {
+ holding_cell_outbound_amount_msat += *amount_msat;
+ }
+ _ => {}
+ }
+ }
+
+ // Check self.their_channel_reserve_satoshis (i.e our channel reserve):
+ if self.value_to_self_msat < self.their_channel_reserve_satoshis * 1000 + amount_msat + holding_cell_outbound_amount_msat + htlc_outbound_value_msat {