Merge pull request #9723 from f321x/lightning_pay_assertion_error
lightning: prevent usage of unavailable channels for payment
This commit is contained in:
@@ -526,7 +526,7 @@ class LNPathFinder(Logger):
|
|||||||
def get_shortest_path_hops(
|
def get_shortest_path_hops(
|
||||||
self,
|
self,
|
||||||
*,
|
*,
|
||||||
nodeA: bytes,
|
nodeA: bytes, # nodeA is expected to be our node id if channels are passed in my_sending_channels
|
||||||
nodeB: bytes,
|
nodeB: bytes,
|
||||||
invoice_amount_msat: int,
|
invoice_amount_msat: int,
|
||||||
my_sending_channels: Dict[ShortChannelID, 'Channel'] = None,
|
my_sending_channels: Dict[ShortChannelID, 'Channel'] = None,
|
||||||
@@ -589,10 +589,11 @@ class LNPathFinder(Logger):
|
|||||||
if not node_filter(edge_startnode, node_info):
|
if not node_filter(edge_startnode, node_info):
|
||||||
continue
|
continue
|
||||||
is_mine = edge_channel_id in my_sending_channels
|
is_mine = edge_channel_id in my_sending_channels
|
||||||
if is_mine:
|
if edge_startnode == nodeA and my_sending_channels: # payment outgoing, on our channel
|
||||||
if edge_startnode == nodeA: # payment outgoing, on our channel
|
if edge_channel_id not in my_sending_channels:
|
||||||
if not my_sending_channels[edge_channel_id].can_pay(amount_msat, check_frozen=True):
|
continue
|
||||||
continue
|
if not my_sending_channels[edge_channel_id].can_pay(amount_msat, check_frozen=True):
|
||||||
|
continue
|
||||||
edge_cost, fee_for_edge_msat = self._edge_cost(
|
edge_cost, fee_for_edge_msat = self._edge_cost(
|
||||||
short_channel_id=edge_channel_id,
|
short_channel_id=edge_channel_id,
|
||||||
start_node=edge_startnode,
|
start_node=edge_startnode,
|
||||||
|
|||||||
Reference in New Issue
Block a user