network: fix confusion between addresses and cached responses
This commit is contained in:
@@ -162,8 +162,11 @@ class Network(util.DaemonThread):
|
|||||||
if not os.path.exists(dir_path):
|
if not os.path.exists(dir_path):
|
||||||
os.mkdir(dir_path)
|
os.mkdir(dir_path)
|
||||||
|
|
||||||
# address subscriptions and cached results
|
# address subscriptions
|
||||||
self.addresses = {}
|
self.addresses = set()
|
||||||
|
# cached results
|
||||||
|
self.addr_responses = {}
|
||||||
|
|
||||||
self.connection_status = 'connecting'
|
self.connection_status = 'connecting'
|
||||||
self.requests_queue = Queue.Queue()
|
self.requests_queue = Queue.Queue()
|
||||||
self.set_proxy(deserialize_proxy(self.config.get('proxy')))
|
self.set_proxy(deserialize_proxy(self.config.get('proxy')))
|
||||||
@@ -209,6 +212,7 @@ class Network(util.DaemonThread):
|
|||||||
return self.interface and self.interface.is_connected()
|
return self.interface and self.interface.is_connected()
|
||||||
|
|
||||||
def send_subscriptions(self):
|
def send_subscriptions(self):
|
||||||
|
self.print_error('sending subscriptions to', self.interface.server, len(self.addresses))
|
||||||
for addr in self.addresses:
|
for addr in self.addresses:
|
||||||
self.interface.send_request({'method':'blockchain.address.subscribe', 'params':[addr]})
|
self.interface.send_request({'method':'blockchain.address.subscribe', 'params':[addr]})
|
||||||
self.interface.send_request({'method':'server.banner','params':[]})
|
self.interface.send_request({'method':'server.banner','params':[]})
|
||||||
@@ -447,8 +451,9 @@ class Network(util.DaemonThread):
|
|||||||
|
|
||||||
if method == 'blockchain.address.subscribe':
|
if method == 'blockchain.address.subscribe':
|
||||||
addr = params[0]
|
addr = params[0]
|
||||||
if addr in self.addresses:
|
self.addresses.add(addr)
|
||||||
self.response_queue.put({'id':_id, 'result':self.addresses[addr]})
|
if addr in self.addr_responses:
|
||||||
|
self.response_queue.put({'id':_id, 'result':self.addr_responses[addr]})
|
||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -505,7 +510,6 @@ class Network(util.DaemonThread):
|
|||||||
self.add_recent_server(i)
|
self.add_recent_server(i)
|
||||||
i.send_request({'method':'blockchain.headers.subscribe','params':[]})
|
i.send_request({'method':'blockchain.headers.subscribe','params':[]})
|
||||||
if i == self.interface:
|
if i == self.interface:
|
||||||
self.print_error('sending subscriptions to', self.interface.server)
|
|
||||||
self.send_subscriptions()
|
self.send_subscriptions()
|
||||||
self.set_status('connected')
|
self.set_status('connected')
|
||||||
else:
|
else:
|
||||||
@@ -555,7 +559,7 @@ class Network(util.DaemonThread):
|
|||||||
def on_address(self, i, r):
|
def on_address(self, i, r):
|
||||||
addr = r.get('params')[0]
|
addr = r.get('params')[0]
|
||||||
result = r.get('result')
|
result = r.get('result')
|
||||||
self.addresses[addr] = result
|
self.addr_responses[addr] = result
|
||||||
self.response_queue.put(r)
|
self.response_queue.put(r)
|
||||||
|
|
||||||
def get_header(self, tx_height):
|
def get_header(self, tx_height):
|
||||||
|
|||||||
Reference in New Issue
Block a user