File tree Expand file tree Collapse file tree 1 file changed +7
-2
lines changed Expand file tree Collapse file tree 1 file changed +7
-2
lines changed Original file line number Diff line number Diff line change @@ -881,9 +881,14 @@ impl Channel {
881
881
}
882
882
}
883
883
884
-
885
884
let value_to_self_msat: i64 = ( self . value_to_self_msat - local_htlc_total_msat) as i64 + value_to_self_msat_offset;
886
- let value_to_remote_msat: i64 = ( self . channel_value_satoshis * 1000 - self . value_to_self_msat - remote_htlc_total_msat) as i64 - value_to_self_msat_offset;
885
+ assert ! ( value_to_self_msat >= 0 ) ;
886
+ // Note that in case they have several just-awaiting-last-RAA fulfills in-progress (ie
887
+ // AwaitingRemoteRevokeToRemove or AwaitingRemovedRemoteRevoke) we may have allowed them to
888
+ // "violate" their reserve value by couting those against it. Thus, we have to convert
889
+ // everything to i64 before subtracting as otherwise we can overflow.
890
+ let value_to_remote_msat: i64 = ( self . channel_value_satoshis * 1000 ) as i64 - ( self . value_to_self_msat as i64 ) - ( remote_htlc_total_msat as i64 ) - value_to_self_msat_offset;
891
+ assert ! ( value_to_remote_msat >= 0 ) ;
887
892
888
893
#[ cfg( debug_assertions) ]
889
894
{
You can’t perform that action at this time.
0 commit comments