electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit 1788e5c1c094390958ee91a74aa3f048ba1e9a0c
parent 6aeab664637681afcaba9f4384091386d57a5a50
Author: ThomasV <thomasv@electrum.org>
Date:   Mon, 11 May 2020 10:31:49 +0200

lnworker: catch exceptions raised in decode_msg

Diffstat:
Melectrum/lnworker.py | 14++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/electrum/lnworker.py b/electrum/lnworker.py @@ -811,6 +811,7 @@ class LNWallet(LNWorker): if chan.short_channel_id == short_channel_id: return chan + @log_exceptions async def _pay(self, invoice: str, amount_sat: int = None, *, attempts: int = 1, full_path: LNPaymentPath = None) -> Tuple[bool, List[PaymentAttemptLog]]: @@ -928,12 +929,13 @@ class LNWallet(LNWorker): assert payload['chain_hash'] == constants.net.rev_genesis_bytes() payload['raw'] = channel_update_typed except: # FIXME: too broad - message_type, payload = decode_msg(channel_update_as_received) - payload['raw'] = channel_update_as_received - # sanity check - if payload['chain_hash'] != constants.net.rev_genesis_bytes(): - self.logger.info(f'could not decode channel_update for failed htlc: {channel_update_as_received.hex()}') - return True + try: + message_type, payload = decode_msg(channel_update_as_received) + payload['raw'] = channel_update_as_received + assert payload['chain_hash'] != constants.net.rev_genesis_bytes() + except: + self.logger.info(f'could not decode channel_update for failed htlc: {channel_update_as_received.hex()}') + return True r = self.channel_db.add_channel_update(payload) blacklist = False short_channel_id = ShortChannelID(payload['short_channel_id'])