1
0

slightly more robust connection procedure

This commit is contained in:
thomasv
2012-05-16 17:29:05 +02:00
parent 94cc6aa93a
commit c5d42f3614
4 changed files with 30 additions and 25 deletions

View File

@@ -211,6 +211,8 @@ class TcpStratumInterface(Interface):
def __init__(self, host, port):
Interface.__init__(self, host, port)
def init_socket(self):
self.s = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
self.s.settimeout(5*60)
self.s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
@@ -277,7 +279,28 @@ class WalletSynchronizer(threading.Thread):
self.daemon = True
self.wallet = wallet
self.loop = loop
self.start_interface()
self.init_interface()
def init_interface(self):
try:
host, port, protocol = self.wallet.server.split(':')
port = int(port)
except:
self.wallet.pick_random_server()
host, port, protocol = self.wallet.server.split(':')
port = int(port)
#print protocol, host, port
if protocol == 't':
InterfaceClass = TcpStratumInterface
elif protocol == 'h':
InterfaceClass = HttpStratumInterface
else:
print "unknown protocol"
InterfaceClass = TcpStratumInterface
self.interface = InterfaceClass(host, port)
self.wallet.interface = self.interface
def handle_response(self, r):
@@ -330,27 +353,8 @@ class WalletSynchronizer(threading.Thread):
def start_interface(self):
try:
host, port, protocol = self.wallet.server.split(':')
port = int(port)
except:
self.wallet.pick_random_server()
host, port, protocol = self.wallet.server.split(':')
port = int(port)
#print protocol, host, port
if protocol == 't':
InterfaceClass = TcpStratumInterface
elif protocol == 'h':
InterfaceClass = HttpStratumInterface
else:
print "unknown protocol"
InterfaceClass = TcpStratumInterface
self.interface = InterfaceClass(host, port)
self.interface.init_socket()
self.interface.start()
self.wallet.interface = self.interface
if self.interface.is_connected:
self.wallet.start_session(self.interface)
@@ -358,6 +362,7 @@ class WalletSynchronizer(threading.Thread):
def run(self):
import socket, time
self.start_interface()
while True:
while self.interface.is_connected:
new_addresses = self.wallet.synchronize()
@@ -384,6 +389,7 @@ class WalletSynchronizer(threading.Thread):
self.wallet.gui_callback()
if self.loop:
time.sleep(5)
self.init_interface()
self.start_interface()
continue
else: