tlabels: don't dump trace if failed to connect to server - electrum - Electrum Bitcoin wallet
 (HTM) git clone https://git.parazyd.org/electrum
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
       ---
 (DIR) commit 8c3ab63504a1b6b5846abc273e5a187ae9737fd7
 (DIR) parent c23e94984836f0df4ebef8ec7688b71975de00b5
 (HTM) Author: SomberNight <somber.night@protonmail.com>
       Date:   Fri, 22 Mar 2019 17:24:52 +0100
       
       labels: don't dump trace if failed to connect to server
       
       Diffstat:
         M electrum/plugins/labels/labels.py   |      23 +++++++++++++++++++++--
       
       1 file changed, 21 insertions(+), 2 deletions(-)
       ---
 (DIR) diff --git a/electrum/plugins/labels/labels.py b/electrum/plugins/labels/labels.py
       t@@ -3,6 +3,7 @@ import hashlib
        import json
        import sys
        import traceback
       +from typing import Union
        
        import base64
        
       t@@ -13,6 +14,18 @@ from electrum.util import log_exceptions, ignore_exceptions, make_aiohttp_sessio
        from electrum.network import Network
        
        
       +class ErrorConnectingServer(Exception):
       +    def __init__(self, reason: Union[str, Exception] = None):
       +        self.reason = reason
       +
       +    def __str__(self):
       +        header = _("Error connecting to {} server").format('Labels')
       +        reason = self.reason
       +        if isinstance(reason, BaseException):
       +            reason = repr(reason)
       +        return f"{header}: {reason}" if reason else header
       +
       +
        class LabelsPlugin(BasePlugin):
        
            def __init__(self, parent, config, name):
       t@@ -109,7 +122,10 @@ class LabelsPlugin(BasePlugin):
                wallet_id = wallet_data[2]
                nonce = 1 if force else self.get_nonce(wallet) - 1
                self.print_error("asking for labels since nonce", nonce)
       -        response = await self.do_get("/labels/since/%d/for/%s" % (nonce, wallet_id))
       +        try:
       +            response = await self.do_get("/labels/since/%d/for/%s" % (nonce, wallet_id))
       +        except Exception as e:
       +            raise ErrorConnectingServer(e) from e
                if response["labels"] is None:
                    self.print_error('no new labels')
                    return
       t@@ -141,7 +157,10 @@ class LabelsPlugin(BasePlugin):
            @ignore_exceptions
            @log_exceptions
            async def pull_safe_thread(self, wallet, force):
       -        await self.pull_thread(wallet, force)
       +        try:
       +            await self.pull_thread(wallet, force)
       +        except ErrorConnectingServer as e:
       +            self.print_error(str(e))
        
            def pull(self, wallet, force):
                if not wallet.network: raise Exception(_('You are offline.'))