Browse Source

fix disconnection error

283
ThomasV 11 years ago
parent
commit
411a87e0a3
  1. 9
      lib/interface.py
  2. 14
      lib/network.py

9
lib/interface.py

@ -252,7 +252,11 @@ class TcpInterface(threading.Thread):
method = request.get('method') method = request.get('method')
params = request.get('params') params = request.get('params')
with self.lock: with self.lock:
self.pipe.send({'id':self.message_id, 'method':method, 'params':params}) try:
self.pipe.send({'id':self.message_id, 'method':method, 'params':params})
except socket.error:
self.is_connected = False
return
self.unanswered_requests[self.message_id] = method, params, _id, queue self.unanswered_requests[self.message_id] = method, params, _id, queue
self.message_id += 1 self.message_id += 1
if self.debug: if self.debug:
@ -283,9 +287,6 @@ class TcpInterface(threading.Thread):
self.s.close() self.s.close()
self.is_connected = False self.is_connected = False
def is_up_to_date(self):
return self.unanswered_requests == {}
def start(self, response_queue): def start(self, response_queue):
self.response_queue = response_queue self.response_queue = response_queue
threading.Thread.start(self) threading.Thread.start(self)

14
lib/network.py

@ -135,17 +135,12 @@ class Network(threading.Thread):
def is_connected(self): def is_connected(self):
return self.interface and self.interface.is_connected return self.interface and self.interface.is_connected
def is_up_to_date(self):
raise
return self.interface.is_up_to_date()
def send_subscriptions(self): def send_subscriptions(self):
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':[]})
self.interface.send_request({'method':'server.peers.subscribe','params':[]}) self.interface.send_request({'method':'server.peers.subscribe','params':[]})
def get_status_value(self, key): def get_status_value(self, key):
if key == 'status': if key == 'status':
value = self.connection_status value = self.connection_status
@ -255,8 +250,13 @@ class Network(threading.Thread):
def switch_to_random_interface(self): def switch_to_random_interface(self):
if self.interfaces: while True:
self.switch_to_interface(random.choice(self.interfaces.values())) i = random.choice(self.interfaces.values())
if i.is_connected:
self.switch_to_interface(i)
break
else:
time.sleep(0.1)
def switch_to_interface(self, interface): def switch_to_interface(self, interface):
server = interface.server server = interface.server

Loading…
Cancel
Save