mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-09-04 04:45:16 +00:00
ln: don't break channel when failing htlc
This commit is contained in:
parent
6f88c55f17
commit
3f73332817
2 changed files with 9 additions and 8 deletions
|
@ -1153,17 +1153,17 @@ class Peer(PrintError):
|
||||||
|
|
||||||
done, pending = await asyncio.wait([fulfill_coro, failure_coro], return_when=FIRST_COMPLETED)
|
done, pending = await asyncio.wait([fulfill_coro, failure_coro], return_when=FIRST_COMPLETED)
|
||||||
if failure_coro.done():
|
if failure_coro.done():
|
||||||
m.fail_htlc(htlc)
|
|
||||||
# TODO receive their commitment here
|
|
||||||
|
|
||||||
# TODO find out why the following block fails with "not enough htlc signatures"
|
|
||||||
sig_64, htlc_sigs = m.sign_next_commitment()
|
sig_64, htlc_sigs = m.sign_next_commitment()
|
||||||
assert len(htlc_sigs) == 0
|
self.send_message(gen_msg("commitment_signed", channel_id=chan.channel_id, signature=sig_64, num_htlcs=1, htlc_signature=htlc_sigs[0]))
|
||||||
self.send_message(gen_msg("commitment_signed", channel_id=chan.channel_id, signature=sig_64, num_htlcs=0))
|
while (await self.commitment_signed[chan.channel_id].get())["htlc_signature"] != b"":
|
||||||
|
self.revoke(m)
|
||||||
|
await self.receive_revoke(m)
|
||||||
|
m.fail_htlc(htlc)
|
||||||
|
sig_64, htlc_sigs = m.sign_next_commitment()
|
||||||
|
self.send_message(gen_msg("commitment_signed", channel_id=chan.channel_id, signature=sig_64, num_htlcs=0))
|
||||||
await self.receive_revoke(m)
|
await self.receive_revoke(m)
|
||||||
self.revoke(m)
|
|
||||||
fulfill_coro.cancel()
|
fulfill_coro.cancel()
|
||||||
|
self.lnworker.save_channel(m.state)
|
||||||
return failure_coro.result()
|
return failure_coro.result()
|
||||||
if fulfill_coro.done():
|
if fulfill_coro.done():
|
||||||
failure_coro.cancel()
|
failure_coro.cancel()
|
||||||
|
|
|
@ -202,6 +202,7 @@ class TestLNBaseHTLCStateMachine(unittest.TestCase):
|
||||||
|
|
||||||
aliceRevocation2, _ = alice_channel.revoke_current_commitment()
|
aliceRevocation2, _ = alice_channel.revoke_current_commitment()
|
||||||
aliceSig2, aliceHtlcSigs2 = alice_channel.sign_next_commitment()
|
aliceSig2, aliceHtlcSigs2 = alice_channel.sign_next_commitment()
|
||||||
|
self.assertEqual(aliceHtlcSigs2, [], "alice should generate no htlc signatures")
|
||||||
|
|
||||||
bob_channel.receive_revocation(aliceRevocation2)
|
bob_channel.receive_revocation(aliceRevocation2)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue