From a5629539e416c8347a3f7e8e8b49ba3a8a80e011 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Sun, 2 Mar 2014 10:31:34 +0100 Subject: [PATCH] add timeout to daemon, update getaddressbalance --- electrum | 11 ++++++++++- lib/commands.py | 11 +++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/electrum b/electrum index e63057a4..d0f9c5ed 100755 --- a/electrum +++ b/electrum @@ -160,6 +160,7 @@ def start_server(): print_msg("Network daemon connected to " + network.interface.connection_msg) from SimpleXMLRPCServer import SimpleXMLRPCServer server = SimpleXMLRPCServer(('localhost',8000), allow_none=True, logRequests=False) + server.network = network server.register_function(lambda: 'pong', 'ping') server.register_function(network.synchronous_get, 'synchronous_get') server.register_function(network.get_servers, 'get_servers') @@ -181,9 +182,17 @@ def start_daemon(): if (pid2 == 0): # Second child server = start_server() server.running = True + timeout = 60 + t0 = time.time() + server.socket.settimeout(timeout) while server.running: server.handle_request() - print_msg("Daemon stopped") + t = time.time() + if t - t0 > 0.9*timeout: + break + if not server.network.is_connected(): + break + t0 = t sys.exit(0) time.sleep(2) diff --git a/lib/commands.py b/lib/commands.py index da6c4bae..64f2c691 100644 --- a/lib/commands.py +++ b/lib/commands.py @@ -79,8 +79,8 @@ register_command('help', 0, 1, False, False, False, 'Prints this register_command('history', 0, 0, True, True, False, 'Returns the transaction history of your wallet') register_command('importprivkey', 1, 1, False, True, True, 'Import a private key', 'importprivkey ') register_command('listaddresses', 2, 2, False, True, False, 'Returns your list of addresses.', '', listaddr_options) -register_command('listunspent', 0, 0, True, False, False, 'Returns the list of unspent inputs in your wallet.') -register_command('getaddressunspent', 1, 1, True, False, False, 'Returns the list of unspent inputs in your wallet.') +register_command('listunspent', 0, 0, True, True, False, 'Returns the list of unspent inputs in your wallet.') +register_command('getaddressunspent', 1, 1, True, False, False, 'Returns the list of unspent inputs for an address.') register_command('mktx', 5, 5, False, True, True, 'Create a signed transaction', 'mktx [label]', payto_options) register_command('mksendmanytx', 4, 4, False, True, True, 'Create a signed transaction', mksendmany_syntax, payto_options) register_command('payto', 5, 5, True, True, True, 'Create and broadcast a transaction.', payto_syntax, payto_options) @@ -227,8 +227,11 @@ class Commands: return out def getaddressbalance(self, addr): - b = self.network.synchronous_get([ ('blockchain.address.get_balance',[addr]) ])[0] - return str(Decimal(b)/100000000) + out = self.network.synchronous_get([ ('blockchain.address.get_balance',[addr]) ])[0] + out["confirmed"] = str(Decimal(out["confirmed"])/100000000) + out["unconfirmed"] = str(Decimal(out["unconfirmed"])/100000000) + return out + def getproof(self, addr): p = self.network.synchronous_get([ ('blockchain.address.get_proof',[addr]) ])[0]