URI: 
       trebase follow-up - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 48252318b8f39885df33d412c5850c69587b8784
   DIR parent 520b5703a4918ac46b88e753b3012b19cf8f8a5e
  HTML Author: SomberNight <somber.night@protonmail.com>
       Date:   Fri, 12 Oct 2018 19:40:12 +0200
       
       rebase follow-up
       
       Diffstat:
         M electrum/lnbase.py                  |      18 +++++++++---------
         M electrum/lnrouter.py                |       2 +-
         M electrum/lnwatcher.py               |      11 ++++++-----
         M electrum/lnworker.py                |       6 +++---
       
       4 files changed, 19 insertions(+), 18 deletions(-)
       ---
   DIR diff --git a/electrum/lnbase.py b/electrum/lnbase.py
       t@@ -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
       t@@ -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:
       t@@ -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
       t@@ -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()
       t@@ -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")
       t@@ -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
       t@@ -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"]]
       t@@ -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):
   DIR diff --git a/electrum/lnrouter.py b/electrum/lnrouter.py
       t@@ -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()
        
   DIR diff --git a/electrum/lnwatcher.py b/electrum/lnwatcher.py
       t@@ -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
       t@@ -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):
       t@@ -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()
       t@@ -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]
   DIR diff --git a/electrum/lnworker.py b/electrum/lnworker.py
       t@@ -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
       t@@ -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):