core, plugin misc_account: set XMPP connection max retries to 0 when checking if an external account exists

This commit is contained in:
souliane 2015-12-07 19:56:12 +01:00
commit f3a5cb2a96
4 changed files with 11 additions and 8 deletions

View file

@ -38,6 +38,7 @@ class Const(object):
# Protocol
XMPP_C2S_PORT = 5222
XMPP_KEEP_ALIFE = 180
XMPP_MAX_RETRIES = 2
## Parameters ##

View file

@ -251,12 +251,13 @@ class SAT(service.Service):
profile = self.memory.getProfileName(profile_key)
return self.asyncConnect(profile, password)
def asyncConnect(self, profile, password=''):
def asyncConnect(self, profile, password='', max_retries=C.XMPP_MAX_RETRIES):
"""Retrieve the individual parameters, authenticate the profile
and initiate the connection to the associated XMPP server.
@param password (string): the SàT profile password
@param profile: %(doc_profile)s
@param password (string): the SàT profile password
@param max_retries (int): max number of connection retries
@return (D(bool)):
- True if the XMPP connection was already established
- False if the XMPP connection has been initiated (it may still fail)
@ -266,7 +267,7 @@ class SAT(service.Service):
if self.isConnected(profile):
log.info(_("already connected !"))
return True
d = self._connectXMPPClient(profile)
d = self._connectXMPPClient(profile, max_retries)
return d.addCallback(lambda dummy: False)
d = self.memory.startSession(password, profile)
@ -274,7 +275,7 @@ class SAT(service.Service):
return d
@defer.inlineCallbacks
def _connectXMPPClient(self, profile):
def _connectXMPPClient(self, profile, max_retries):
"""This part is called from asyncConnect when we have loaded individual parameters from memory"""
try:
port = int(self.memory.getParamA(C.FORCE_PORT_PARAM, "Connection", profile_key=profile))
@ -285,7 +286,8 @@ class SAT(service.Service):
password = yield self.memory.asyncGetParamA("Password", "Connection", profile_key=profile)
current = self.profiles[profile] = xmpp.SatXMPPClient(self, profile,
jid.JID(self.memory.getParamA("JabberID", "Connection", profile_key=profile)),
password, self.memory.getParamA(C.FORCE_SERVER_PARAM, "Connection", profile_key=profile), port)
password, self.memory.getParamA(C.FORCE_SERVER_PARAM, "Connection", profile_key=profile),
port, max_retries)
current.messageProt = xmpp.SatMessageProtocol(self)
current.messageProt.setHandlerParent(current)

View file

@ -34,12 +34,12 @@ from twisted.words.protocols.jabber.xmlstream import XMPPHandler
class SatXMPPClient(client.XMPPClient):
implements(iwokkel.IDisco)
def __init__(self, host_app, profile, user_jid, password, host=None, port=C.XMPP_C2S_PORT):
def __init__(self, host_app, profile, user_jid, password, host=None, port=C.XMPP_C2S_PORT, max_retries=C.XMPP_MAX_RETRIES):
# XXX: DNS SRV records are checked when the host is not specified.
# If no SRV record is found, the host is directly extracted from the JID.
client.XMPPClient.__init__(self, user_jid, password, host or None, port or C.XMPP_C2S_PORT)
self.factory.clientConnectionLost = self.connectionLost
self.factory.maxRetries = 2
self.factory.maxRetries = max_retries
self.__connected = False
self.profile = profile
self.host_app = host_app

View file

@ -541,7 +541,7 @@ http://www.salut-a-toi.org
d = self.registerAccount(None, password, jid_s, jid_s)
d.addCallback(lambda dummy: self.host.memory.getProfileName(jid_s)) # checks if the profile has been successfuly created
d.addCallback(self.host.asyncConnect, password)
d.addCallback(self.host.asyncConnect, password, 0)
def removeProfile(failure): # profile has been successfully created but the XMPP credentials are wrong!
log.debug("Removing previously auto-created profile: %s" % failure.getErrorMessage())