use ping time to determine if we are disconnected
This commit is contained in:
parent
517f649532
commit
efa0972971
|
@ -70,6 +70,9 @@ class TcpInterface(threading.Thread):
|
||||||
self.message_id = 0
|
self.message_id = 0
|
||||||
self.unanswered_requests = {}
|
self.unanswered_requests = {}
|
||||||
|
|
||||||
|
# are we waiting for a pong?
|
||||||
|
self.is_ping = False
|
||||||
|
|
||||||
# parse server
|
# parse server
|
||||||
self.server = server
|
self.server = server
|
||||||
self.host, self.port, self.protocol = self.server.split(':')
|
self.host, self.port, self.protocol = self.server.split(':')
|
||||||
|
@ -117,6 +120,7 @@ class TcpInterface(threading.Thread):
|
||||||
|
|
||||||
if method == 'server.version':
|
if method == 'server.version':
|
||||||
self.server_version = result
|
self.server_version = result
|
||||||
|
self.is_ping = False
|
||||||
return
|
return
|
||||||
|
|
||||||
queue.put((self, {'method':method, 'params':params, 'result':result, 'id':_id}))
|
queue.put((self, {'method':method, 'params':params, 'result':result, 'id':_id}))
|
||||||
|
@ -254,7 +258,8 @@ class TcpInterface(threading.Thread):
|
||||||
with self.lock:
|
with self.lock:
|
||||||
try:
|
try:
|
||||||
self.pipe.send({'id':self.message_id, 'method':method, 'params':params})
|
self.pipe.send({'id':self.message_id, 'method':method, 'params':params})
|
||||||
except socket.error:
|
except socket.error, e:
|
||||||
|
print_error("socked error:", self.server, e)
|
||||||
self.is_connected = False
|
self.is_connected = False
|
||||||
return
|
return
|
||||||
self.unanswered_requests[self.message_id] = method, params, _id, queue
|
self.unanswered_requests[self.message_id] = method, params, _id, queue
|
||||||
|
@ -301,8 +306,14 @@ class TcpInterface(threading.Thread):
|
||||||
while self.is_connected:
|
while self.is_connected:
|
||||||
# ping the server with server.version
|
# ping the server with server.version
|
||||||
if time.time() - t > 60:
|
if time.time() - t > 60:
|
||||||
self.send_request({'method':'server.version', 'params':[ELECTRUM_VERSION, PROTOCOL_VERSION]})
|
if self.is_ping:
|
||||||
t = time.time()
|
print_error("ping timeout", self.server)
|
||||||
|
self.is_connected = False
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
self.send_request({'method':'server.version', 'params':[ELECTRUM_VERSION, PROTOCOL_VERSION]})
|
||||||
|
self.is_ping = True
|
||||||
|
t = time.time()
|
||||||
try:
|
try:
|
||||||
response = self.pipe.get()
|
response = self.pipe.get()
|
||||||
except util.timeout:
|
except util.timeout:
|
||||||
|
|
Loading…
Reference in New Issue