fix disconnection error

This commit is contained in:
ThomasV 2014-07-29 14:19:23 +02:00
parent 1c707d05d3
commit 411a87e0a3
2 changed files with 12 additions and 11 deletions

View File

@ -252,7 +252,11 @@ class TcpInterface(threading.Thread):
method = request.get('method')
params = request.get('params')
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.message_id += 1
if self.debug:
@ -283,9 +287,6 @@ class TcpInterface(threading.Thread):
self.s.close()
self.is_connected = False
def is_up_to_date(self):
return self.unanswered_requests == {}
def start(self, response_queue):
self.response_queue = response_queue
threading.Thread.start(self)

View File

@ -135,17 +135,12 @@ class Network(threading.Thread):
def is_connected(self):
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):
for addr in self.addresses:
self.interface.send_request({'method':'blockchain.address.subscribe', 'params':[addr]})
self.interface.send_request({'method':'server.banner','params':[]})
self.interface.send_request({'method':'server.peers.subscribe','params':[]})
def get_status_value(self, key):
if key == 'status':
value = self.connection_status
@ -255,8 +250,13 @@ class Network(threading.Thread):
def switch_to_random_interface(self):
if self.interfaces:
self.switch_to_interface(random.choice(self.interfaces.values()))
while True:
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):
server = interface.server