fix disconnection error
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user