Browse Source

lnpeer: do not drop channel updates if cannot send

hard-fail-on-bad-server-string
ThomasV 5 years ago
parent
commit
d827aedd16
  1. 10
      electrum/lnpeer.py
  2. 2
      electrum/lnworker.py

10
electrum/lnpeer.py

@ -1268,10 +1268,7 @@ class Peer(Logger):
async def _fulfill_htlc(self, chan: Channel, htlc_id: int, preimage: bytes):
self.logger.info(f"_fulfill_htlc. chan {chan.short_channel_id}. htlc_id {htlc_id}")
if not chan.can_send_ctx_updates():
self.logger.info(f"dropping chan update (fulfill htlc {htlc_id}) for {chan.short_channel_id}. "
f"cannot send updates")
return
assert chan.can_send_ctx_updates(), f"cannot send updates: {chan.short_channel_id}"
chan.settle_htlc(preimage, htlc_id)
payment_hash = sha256(preimage)
self.lnworker.payment_received(payment_hash)
@ -1285,10 +1282,7 @@ class Peer(Logger):
async def fail_htlc(self, chan: Channel, htlc_id: int, onion_packet: OnionPacket,
reason: OnionRoutingFailureMessage):
self.logger.info(f"fail_htlc. chan {chan.short_channel_id}. htlc_id {htlc_id}. reason: {reason}")
if not chan.can_send_ctx_updates():
self.logger.info(f"dropping chan update (fail htlc {htlc_id}) for {chan.short_channel_id}. "
f"cannot send updates")
return
assert chan.can_send_ctx_updates(), f"cannot send updates: {chan.short_channel_id}"
chan.fail_htlc(htlc_id)
remote_ctn = chan.get_latest_ctn(REMOTE)
error_packet = construct_onion_error(reason, onion_packet, our_onion_private_key=self.privkey)

2
electrum/lnworker.py

@ -1332,7 +1332,7 @@ class LNWallet(LNWorker):
while True:
await asyncio.sleep(0.1)
for chan_id, chan in self.channels.items():
if chan.peer_state != peer_states.GOOD:
if not chan.can_send_ctx_updates():
continue
peer = self.peers[chan.node_id]
done = set()

Loading…
Cancel
Save