mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-08-31 17:31:36 +00:00
follow-up prev
we can't just test with a 1 msat htlc as that might be below htlc_minimum_msat
This commit is contained in:
parent
12d771737a
commit
f52072e169
2 changed files with 18 additions and 9 deletions
|
@ -688,7 +688,8 @@ class Channel(AbstractChannel):
|
|||
self.storage['frozen_for_receiving'] = bool(b)
|
||||
util.trigger_callback('channel', self)
|
||||
|
||||
def _assert_can_add_htlc(self, *, htlc_proposer: HTLCOwner, amount_msat: int) -> None:
|
||||
def _assert_can_add_htlc(self, *, htlc_proposer: HTLCOwner, amount_msat: int,
|
||||
ignore_min_htlc_value: bool = False) -> None:
|
||||
"""Raises PaymentFailure if the htlc_proposer cannot add this new HTLC.
|
||||
(this is relevant both for forwarding and endpoint)
|
||||
"""
|
||||
|
@ -712,10 +713,11 @@ class Channel(AbstractChannel):
|
|||
strict = (htlc_proposer == LOCAL)
|
||||
|
||||
# check htlc raw value
|
||||
if amount_msat <= 0:
|
||||
raise PaymentFailure("HTLC value must be positive")
|
||||
if amount_msat < chan_config.htlc_minimum_msat:
|
||||
raise PaymentFailure(f'HTLC value too small: {amount_msat} msat')
|
||||
if not ignore_min_htlc_value:
|
||||
if amount_msat <= 0:
|
||||
raise PaymentFailure("HTLC value must be positive")
|
||||
if amount_msat < chan_config.htlc_minimum_msat:
|
||||
raise PaymentFailure(f'HTLC value too small: {amount_msat} msat')
|
||||
if amount_msat > LN_MAX_HTLC_VALUE_MSAT and not self._ignore_max_htlc_value:
|
||||
raise PaymentFailure(f"HTLC value over protocol maximum: {amount_msat} > {LN_MAX_HTLC_VALUE_MSAT} msat")
|
||||
|
||||
|
@ -752,12 +754,15 @@ class Channel(AbstractChannel):
|
|||
return False
|
||||
return True
|
||||
|
||||
def can_receive(self, amount_msat: int, *, check_frozen=False) -> bool:
|
||||
def can_receive(self, amount_msat: int, *, check_frozen=False,
|
||||
ignore_min_htlc_value: bool = False) -> bool:
|
||||
"""Returns whether the remote can add an HTLC of given value."""
|
||||
if check_frozen and self.is_frozen_for_receiving():
|
||||
return False
|
||||
try:
|
||||
self._assert_can_add_htlc(htlc_proposer=REMOTE, amount_msat=amount_msat)
|
||||
self._assert_can_add_htlc(htlc_proposer=REMOTE,
|
||||
amount_msat=amount_msat,
|
||||
ignore_min_htlc_value=ignore_min_htlc_value)
|
||||
except PaymentFailure:
|
||||
return False
|
||||
return True
|
||||
|
|
|
@ -1197,13 +1197,17 @@ class LNWallet(LNWorker):
|
|||
channels = list(self.channels.values())
|
||||
scid_to_my_channels = {chan.short_channel_id: chan for chan in channels
|
||||
if chan.short_channel_id is not None}
|
||||
ignore_min_htlc_value = False
|
||||
if amount_sat:
|
||||
amount_msat = 1000 * amount_sat
|
||||
else: # for no amt invoices, check if channel can receive at least 1 sat:
|
||||
else:
|
||||
# for no amt invoices, check if channel can receive at least 1 msat
|
||||
amount_msat = 1
|
||||
ignore_min_htlc_value = True
|
||||
# note: currently we add *all* our channels; but this might be a privacy leak?
|
||||
for chan in channels:
|
||||
if not chan.can_receive(amount_msat=amount_msat, check_frozen=True):
|
||||
if not chan.can_receive(amount_msat=amount_msat, check_frozen=True,
|
||||
ignore_min_htlc_value=ignore_min_htlc_value):
|
||||
continue
|
||||
chan_id = chan.short_channel_id
|
||||
assert isinstance(chan_id, bytes), chan_id
|
||||
|
|
Loading…
Add table
Reference in a new issue