diff --git a/trezor_agent/client.py b/trezor_agent/client.py index 562f7ce..9464385 100644 --- a/trezor_agent/client.py +++ b/trezor_agent/client.py @@ -81,7 +81,7 @@ class Client(object): except self.call_exception as e: code, msg = e.args log.warning('%s error #%s: %s', self.device_name, code, msg) - raise IOError(msg) + raise IOError(msg) # close current connection, keep server open verifying_key = formats.decompress_pubkey(pubkey=result.public_key, curve_name=self.curve) diff --git a/trezor_agent/protocol.py b/trezor_agent/protocol.py index 9418224..9f55268 100644 --- a/trezor_agent/protocol.py +++ b/trezor_agent/protocol.py @@ -139,7 +139,10 @@ class Handler(object): log.debug('signing %d-byte blob', len(blob)) label = key['name'].decode('ascii') # label should be a string - signature = self.signer(label=label, blob=blob) + try: + signature = self.signer(label=label, blob=blob) + except IOError: + return _fail() log.debug('signature: %s', binascii.hexlify(signature)) try: diff --git a/trezor_agent/server.py b/trezor_agent/server.py index a737164..5680614 100644 --- a/trezor_agent/server.py +++ b/trezor_agent/server.py @@ -55,8 +55,6 @@ def handle_connection(conn, handler): msg = util.read_frame(conn) reply = handler.handle(msg=msg) util.send(conn, reply) - except IOError as e: - log.error('I/O error: %s', e) except EOFError: log.debug('goodbye agent') except Exception as e: # pylint: disable=broad-except