Browse Source

rebase follow-up

regtest_lnd
SomberNight 6 years ago
parent
commit
9b49777427
No known key found for this signature in database GPG Key ID: B33B5F232C6271E9
  1. 18
      electrum/lnbase.py
  2. 2
      electrum/lnrouter.py
  3. 11
      electrum/lnwatcher.py
  4. 6
      electrum/lnworker.py

18
electrum/lnbase.py

@ -17,13 +17,12 @@ from typing import List
import cryptography.hazmat.primitives.ciphers.aead as AEAD
import aiorpcx
from .util import list_enabled_bits
from . import bitcoin
from . import ecc
from .ecc import sig_string_from_r_and_s, get_r_and_s_from_sig_string
from .crypto import sha256
from . import constants
from .util import PrintError, bh2u, print_error, bfh, log_exceptions
from .util import PrintError, bh2u, print_error, bfh, log_exceptions, list_enabled_bits, ignore_exceptions
from .transaction import Transaction, TxOutput
from .lnonion import new_onion_packet, OnionHopsDataSingle, OnionPerHop, decode_onion_error, OnionFailureCode
from .lnaddr import lndecode
@ -506,7 +505,8 @@ class Peer(PrintError):
self.lnworker.peers.pop(self.pubkey)
return wrapper_func
@aiosafe
@ignore_exceptions # do not kill main_taskgroup
@log_exceptions
@handle_disconnect
async def main_loop(self):
try:
@ -768,7 +768,7 @@ class Peer(PrintError):
m.set_state('DISCONNECTED')
raise Exception('funding outpoint mismatch')
@aiosafe
@log_exceptions
async def reestablish_channel(self, chan):
await self.initialized
chan_id = chan.channel_id
@ -890,7 +890,7 @@ class Peer(PrintError):
self.lnworker.save_channel(chan)
asyncio.run_coroutine_threadsafe(coro, self.network.asyncio_loop)
@aiosafe
@log_exceptions
async def handle_announcements(self, chan):
h, local_node_sig, local_bitcoin_sig = self.send_announcement_signatures(chan)
announcement_signatures_msg = await self.announcement_signatures[chan.channel_id].get()
@ -1011,7 +1011,7 @@ class Peer(PrintError):
return h, node_signature, bitcoin_signature
@aiosafe
@log_exceptions
async def on_update_fail_htlc(self, payload):
channel_id = payload["channel_id"]
htlc_id = int.from_bytes(payload["id"], "big")
@ -1138,7 +1138,7 @@ class Peer(PrintError):
m.receive_new_commitment(commitment_signed_msg["signature"], htlc_sigs)
return len(htlc_sigs)
@aiosafe
@log_exceptions
async def receive_commitment_revoke_ack(self, htlc, decoded, payment_preimage):
chan = self.channels[htlc['channel_id']]
channel_id = chan.channel_id
@ -1172,7 +1172,7 @@ class Peer(PrintError):
self.lnworker.save_channel(chan)
self.commitment_signed[channel_id].put_nowait(payload)
@aiosafe
@log_exceptions
async def on_update_fulfill_htlc(self, update_fulfill_htlc_msg):
self.print_error("update_fulfill")
chan = self.channels[update_fulfill_htlc_msg["channel_id"]]
@ -1251,7 +1251,7 @@ class Peer(PrintError):
if chan_id not in self.closing_signed: raise Exception("Got unknown closing_signed")
self.closing_signed[chan_id].put_nowait(payload)
@aiosafe
@log_exceptions
async def on_shutdown(self, payload):
# length of scripts allowed in BOLT-02
if int.from_bytes(payload['len'], 'big') not in (3+20+2, 2+20+1, 2+20, 2+32):

2
electrum/lnrouter.py

@ -282,7 +282,7 @@ class ChannelDB(JsonDB):
self.ca_verifier = LNChannelVerifier(network, self)
# FIXME if the channel verifier raises, it kills network.main_taskgroup
asyncio.run_coroutine_threadsafe(self.network.add_job(self.ca_verifier.main()), network.asyncio_loop)
asyncio.run_coroutine_threadsafe(self.network.add_job(self.ca_verifier.main), network.asyncio_loop)
self.load_data()

11
electrum/lnwatcher.py

@ -5,8 +5,8 @@ from collections import defaultdict
import asyncio
import jsonrpclib
from .util import PrintError, bh2u, bfh, NoDynamicFeeEstimates, aiosafe
from .lnutil import EncumberedTransaction, Outpoint
from .util import PrintError, bh2u, bfh, log_exceptions, ignore_exceptions
from .lnutil import EncumberedTransaction
from . import wallet
from .storage import WalletStorage
from .address_synchronizer import AddressSynchronizer
@ -47,7 +47,7 @@ class LNWatcher(PrintError):
watchtower_url = self.config.get('watchtower_url')
self.watchtower = jsonrpclib.Server(watchtower_url) if watchtower_url else None
self.watchtower_queue = asyncio.Queue()
self.network.start([self.watchtower_task])
asyncio.run_coroutine_threadsafe(self.network.add_job(self.watchtower_task), self.network.asyncio_loop)
def with_watchtower(func):
def wrapper(self, *args, **kwargs):
@ -56,7 +56,8 @@ class LNWatcher(PrintError):
return func(self, *args, **kwargs)
return wrapper
@aiosafe
@ignore_exceptions
@log_exceptions
async def watchtower_task(self):
while True:
name, args, kwargs = await self.watchtower_queue.get()
@ -89,7 +90,7 @@ class LNWatcher(PrintError):
self.channel_info[address] = outpoint
self.write_to_disk()
@aiosafe
@log_exceptions
async def on_network_update(self, event, *args):
if event in ('verified', 'wallet_updated'):
wallet = args[0]

6
electrum/lnworker.py

@ -15,8 +15,8 @@ from . import keystore
from . import bitcoin
from .keystore import BIP32_KeyStore
from .bitcoin import sha256, COIN
from .util import bh2u, bfh, PrintError, InvoiceError, resolve_dns_srv, is_ip_address
from .lnbase import Peer, aiosafe
from .util import bh2u, bfh, PrintError, InvoiceError, resolve_dns_srv, is_ip_address, log_exceptions
from .lnbase import Peer
from .lnaddr import lnencode, LnAddr, lndecode
from .ecc import der_sig_from_sig_string
from .lnchan import Channel
@ -158,7 +158,7 @@ class LNWorker(PrintError):
self.channel_db.remove_channel(chan.short_channel_id)
self.network.trigger_callback('channel', chan)
@aiosafe
@log_exceptions
async def on_network_update(self, event, *args):
# TODO
# Race discovered in save_channel (assertion failing):

Loading…
Cancel
Save