Browse Source

CMClient reconnects always, until disconnect

pull/18/merge
Rossen Georgiev 9 years ago
parent
commit
8e244e00dc
  1. 20
      steam/client/cm.py

20
steam/client/cm.py

@ -45,7 +45,6 @@ class CMClient:
def __init__(self, protocol=0):
self.verbose_debug = False
self.reconnect = False
self._init_attributes()
@ -66,11 +65,8 @@ class CMClient:
self.register_callback(EMsg.Multi, self._handle_multi),
self.register_callback(EMsg.ClientLogOnResponse, self._handle_logon),
def connect(self, reconnect=None):
if reconnect is not None:
self.reconnect = reconnect
logger.debug("Connect (reconnect=%s)" % self.reconnect)
def connect(self):
logger.debug("Connect initiated.")
while True:
with gevent.Timeout(15, False):
@ -78,18 +74,14 @@ class CMClient:
self.connection.connect(server_addr)
if not self.connection.event_connected.is_set():
if self.reconnect:
logger.debug("Failed to connect. Retrying...")
continue
logger.debug("Failed to connect")
return False
break
logger.debug("Event: Connected")
self.event_connected.set()
self._recv_loop = gevent.spawn(self._recv_messages)
return True
def disconnect(self):
self.connection.disconnect()
@ -144,7 +136,6 @@ class CMClient:
except queue.Empty:
if not self.connection.event_connected.is_set():
self.disconnect()
if self.reconnect:
gevent.spawn(self.connect)
return
continue
@ -277,8 +268,13 @@ class CMClient:
self.send_message(message)
def _handle_logon(self, emsg, msg):
if msg.body.eresult != EResult.OK:
result = msg.body.eresult
if result != EResult.OK:
self.disconnect()
if result in (EResult.TryAnotherCM, EResult.ServiceUnavailable):
gevent.spawn(self.connect)
return
logger.debug("Logon completed")

Loading…
Cancel
Save