diff --git a/electrumx/server/chain_state.py b/electrumx/server/chain_state.py index 38b4e7b..7bf2374 100644 --- a/electrumx/server/chain_state.py +++ b/electrumx/server/chain_state.py @@ -6,8 +6,6 @@ # and warranty status of this software. -import asyncio - from aiorpcx import run_in_thread from electrumx.lib.hash import hash_to_hex_str @@ -95,13 +93,9 @@ class ChainState(object): except ValueError: pass - try: - hashX = coin.address_to_hashX(arg) - lines.append(f'Address: {arg}') - return hashX - except Base58Error: - print(f'Ingoring unknown arg: {arg}') - return None + hashX = coin.address_to_hashX(arg) + lines.append(f'Address: {arg}') + return hashX for arg in args: hashX = arg_to_hashX(arg) diff --git a/electrumx/server/session.py b/electrumx/server/session.py index 4676ef1..f058b18 100644 --- a/electrumx/server/session.py +++ b/electrumx/server/session.py @@ -28,7 +28,7 @@ import electrumx import electrumx.lib.text as text import electrumx.lib.util as util from electrumx.lib.hash import (sha256, hash_to_hex_str, hex_str_to_hash, - HASHX_LEN) + HASHX_LEN, Base58Error) from electrumx.lib.peer import Peer from electrumx.server.daemon import DaemonError from electrumx.server.peers import PeerManager @@ -384,7 +384,10 @@ class SessionManager(object): async def rpc_query(self, items, limit): '''Return a list of data about server peers.''' - return await self.chain_state.query(items, limit) + try: + return await self.chain_state.query(items, limit) + except Base58Error as e: + raise RPCError(BAD_REQUEST, e.args[0]) from None async def rpc_sessions(self): '''Return statistics about connected sessions.''' diff --git a/electrumx_rpc b/electrumx_rpc index a520f94..c8bc1d0 100755 --- a/electrumx_rpc +++ b/electrumx_rpc @@ -113,7 +113,7 @@ def main(): # aiorpcX makes this so easy... async def send_request(): try: - async with timeout_after(1): + async with timeout_after(15): async with ClientSession('localhost', port) as session: result = await session.send_request(method, args) if method in ('query', ):