Browse Source

lnchannel.available_to_spend: return zero if frozen or not active. Without this, the channel details window displays can_send/can_receive values that are inconsistent with the main window

patch-4
ThomasV 4 years ago
parent
commit
d70431c0e7
  1. 4
      electrum/lnchannel.py
  2. 6
      electrum/lnworker.py

4
electrum/lnchannel.py

@ -1095,6 +1095,9 @@ class Channel(AbstractChannel):
sender = subject
receiver = subject.inverted()
initiator = LOCAL if self.constraints.is_initiator else REMOTE # the initiator/funder pays on-chain fees
is_frozen = self.is_frozen_for_sending() if subject == LOCAL else self.is_frozen_for_receiving()
if not self.is_active() or is_frozen:
return 0
def consider_ctx(*, ctx_owner: HTLCOwner, is_htlc_dust: bool) -> int:
ctn = self.get_next_ctn(ctx_owner)
@ -1488,4 +1491,3 @@ class Channel(AbstractChannel):
self.logger.info('funding outpoint mismatch')
return False
return True

6
electrum/lnworker.py

@ -1419,8 +1419,7 @@ class LNWallet(LNWorker):
with self.lock:
if self.channels:
for c in self.channels.values():
if c.is_active() and not c.is_frozen_for_sending():
send_values.append(Decimal(c.available_to_spend(LOCAL)) / 1000)
send_values.append(Decimal(c.available_to_spend(LOCAL)) / 1000)
return max(send_values)
def num_sats_can_receive(self) -> Decimal:
@ -1428,8 +1427,7 @@ class LNWallet(LNWorker):
with self.lock:
if self.channels:
for c in self.channels.values():
if c.is_active() and not c.is_frozen_for_receiving():
receive_values.append(Decimal(c.available_to_spend(REMOTE)) / 1000)
receive_values.append(Decimal(c.available_to_spend(REMOTE)) / 1000)
return max(receive_values)
def can_pay_invoice(self, invoice: LNInvoice) -> bool:

Loading…
Cancel
Save