From 9efc25bdba3d56d13dfc79975cf228afcec85e00 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Sat, 26 Jul 2014 16:24:22 +0200 Subject: [PATCH] interface: use parse_json --- lib/daemon.py | 11 +---------- lib/interface.py | 16 +++++++--------- lib/network_proxy.py | 4 ++-- lib/util.py | 12 ++++++++++++ 4 files changed, 22 insertions(+), 21 deletions(-) diff --git a/lib/daemon.py b/lib/daemon.py index c463f91ea..b2d30529d 100644 --- a/lib/daemon.py +++ b/lib/daemon.py @@ -25,7 +25,7 @@ import traceback import json import Queue from network import Network -from util import print_error, print_stderr +from util import print_error, print_stderr, parse_json from simple_config import SimpleConfig @@ -39,15 +39,6 @@ Network also reports status changes DAEMON_PORT=8001 -def parse_json(message): - n = message.find('\n') - if n==-1: - return None, message - try: - j = json.loads( message[0:n] ) - except: - j = None - return j, message[n+1:] diff --git a/lib/interface.py b/lib/interface.py index 5835abf48..7d90c5167 100644 --- a/lib/interface.py +++ b/lib/interface.py @@ -33,7 +33,7 @@ DEFAULT_TIMEOUT = 5 proxy_modes = ['socks4', 'socks5', 'http'] - +from util import parse_json def cert_verify_hostname(s): # hostname verification (disabled) @@ -392,7 +392,7 @@ class Interface(threading.Thread): def run_tcp(self): try: #if self.use_ssl: self.s.do_handshake() - out = '' + message = '' while self.is_connected: try: timeout = False @@ -417,18 +417,16 @@ class Interface(threading.Thread): self.send([('server.version', [ELECTRUM_VERSION, PROTOCOL_VERSION])], self.on_version) continue - out += msg + message += msg self.bytes_received += len(msg) if msg == '': self.is_connected = False while True: - s = out.find('\n') - if s==-1: break - c = out[0:s] - out = out[s+1:] - c = json.loads(c) - self.process_response(c) + response, message = parse_json(message) + if response is None: + break + self.process_response(response) except Exception: traceback.print_exc(file=sys.stdout) diff --git a/lib/network_proxy.py b/lib/network_proxy.py index c1e8585a9..fea21e67a 100644 --- a/lib/network_proxy.py +++ b/lib/network_proxy.py @@ -25,10 +25,10 @@ import traceback import json import Queue from network import Network -from util import print_error, print_stderr +from util import print_error, print_stderr, parse_json from simple_config import SimpleConfig -from daemon import parse_json, NetworkServer, DAEMON_PORT +from daemon import NetworkServer, DAEMON_PORT diff --git a/lib/util.py b/lib/util.py index d796ae462..27051674a 100644 --- a/lib/util.py +++ b/lib/util.py @@ -211,3 +211,15 @@ def raw_input(prompt=None): import __builtin__ builtin_raw_input = __builtin__.raw_input __builtin__.raw_input = raw_input + + + +def parse_json(message): + n = message.find('\n') + if n==-1: + return None, message + try: + j = json.loads( message[0:n] ) + except: + j = None + return j, message[n+1:]