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
This commit is contained in:
@@ -1095,6 +1095,9 @@ class Channel(AbstractChannel):
|
|||||||
sender = subject
|
sender = subject
|
||||||
receiver = subject.inverted()
|
receiver = subject.inverted()
|
||||||
initiator = LOCAL if self.constraints.is_initiator else REMOTE # the initiator/funder pays on-chain fees
|
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:
|
def consider_ctx(*, ctx_owner: HTLCOwner, is_htlc_dust: bool) -> int:
|
||||||
ctn = self.get_next_ctn(ctx_owner)
|
ctn = self.get_next_ctn(ctx_owner)
|
||||||
@@ -1488,4 +1491,3 @@ class Channel(AbstractChannel):
|
|||||||
self.logger.info('funding outpoint mismatch')
|
self.logger.info('funding outpoint mismatch')
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|||||||
@@ -1419,8 +1419,7 @@ class LNWallet(LNWorker):
|
|||||||
with self.lock:
|
with self.lock:
|
||||||
if self.channels:
|
if self.channels:
|
||||||
for c in self.channels.values():
|
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)
|
return max(send_values)
|
||||||
|
|
||||||
def num_sats_can_receive(self) -> Decimal:
|
def num_sats_can_receive(self) -> Decimal:
|
||||||
@@ -1428,8 +1427,7 @@ class LNWallet(LNWorker):
|
|||||||
with self.lock:
|
with self.lock:
|
||||||
if self.channels:
|
if self.channels:
|
||||||
for c in self.channels.values():
|
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)
|
return max(receive_values)
|
||||||
|
|
||||||
def can_pay_invoice(self, invoice: LNInvoice) -> bool:
|
def can_pay_invoice(self, invoice: LNInvoice) -> bool:
|
||||||
|
|||||||
Reference in New Issue
Block a user