daemon: handle rpc server init errors
This commit is contained in:
parent
b87c5d12fa
commit
f61d8b4c24
|
@ -112,16 +112,25 @@ class Daemon(DaemonThread):
|
||||||
# Setup JSONRPC server
|
# Setup JSONRPC server
|
||||||
path = config.get_wallet_path()
|
path = config.get_wallet_path()
|
||||||
default_wallet = self.load_wallet(path)
|
default_wallet = self.load_wallet(path)
|
||||||
cmd_runner = Commands(self.config, default_wallet, self.network)
|
self.cmd_runner = Commands(self.config, default_wallet, self.network)
|
||||||
host = config.get('rpchost', 'localhost')
|
self.init_server(config, fd)
|
||||||
|
|
||||||
|
def init_server(self, config, fd):
|
||||||
|
host = config.get('rpchost', '')
|
||||||
port = config.get('rpcport', 0)
|
port = config.get('rpcport', 0)
|
||||||
server = SimpleJSONRPCServer((host, port), logRequests=False,
|
try:
|
||||||
requestHandler=RequestHandler)
|
server = SimpleJSONRPCServer((host, port), logRequests=False,
|
||||||
|
requestHandler=RequestHandler)
|
||||||
|
except:
|
||||||
|
self.print_error('Warning: cannot initialize RPC server on host', host)
|
||||||
|
self.server = None
|
||||||
|
os.close(fd)
|
||||||
|
return
|
||||||
os.write(fd, repr((server.socket.getsockname(), time.time())))
|
os.write(fd, repr((server.socket.getsockname(), time.time())))
|
||||||
os.close(fd)
|
os.close(fd)
|
||||||
server.timeout = 0.1
|
server.timeout = 0.1
|
||||||
for cmdname in known_commands:
|
for cmdname in known_commands:
|
||||||
server.register_function(getattr(cmd_runner, cmdname), cmdname)
|
server.register_function(getattr(self.cmd_runner, cmdname), cmdname)
|
||||||
server.register_function(self.run_cmdline, 'run_cmdline')
|
server.register_function(self.run_cmdline, 'run_cmdline')
|
||||||
server.register_function(self.ping, 'ping')
|
server.register_function(self.ping, 'ping')
|
||||||
server.register_function(self.run_daemon, 'daemon')
|
server.register_function(self.run_daemon, 'daemon')
|
||||||
|
@ -214,7 +223,7 @@ class Daemon(DaemonThread):
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
while self.is_running():
|
while self.is_running():
|
||||||
self.server.handle_request()
|
self.server.handle_request() if self.server else time.sleep(0.1)
|
||||||
for k, wallet in self.wallets.items():
|
for k, wallet in self.wallets.items():
|
||||||
wallet.stop_threads()
|
wallet.stop_threads()
|
||||||
if self.network:
|
if self.network:
|
||||||
|
|
Loading…
Reference in New Issue