core (disco): added a timeout to get items

This commit is contained in:
Goffi 2014-09-08 21:23:21 +02:00
commit 85b3c92376
2 changed files with 6 additions and 1 deletions

View file

@ -288,7 +288,8 @@ class SAT(service.Service):
log.error("error (plugin %(name)s): %(failure)s" %
{'name': plugin_conn_cb[idx][0], 'failure': result})
yield list_d.addCallback(logPluginResults)
yield list_d.addCallback(logPluginResults) # FIXME: we should have a timeout here, and a way to know if a plugin freeze
# TODO: mesure time to launch of each plugin
def _authenticateProfile(self, password, profile):
"""Authenticate the profile.

View file

@ -24,6 +24,7 @@ log = getLogger(__name__)
from twisted.words.protocols.jabber import jid
from twisted.words.protocols.jabber.error import StanzaError
from twisted.internet import defer
from twisted.internet import reactor
from sat.core.constants import Const as C
from wokkel import disco
from base64 import b64encode
@ -33,6 +34,7 @@ from hashlib import sha1
PRESENCE = '/presence'
NS_ENTITY_CAPABILITY = 'http://jabber.org/protocol/caps'
CAPABILITY_UPDATE = PRESENCE + '/c[@xmlns="' + NS_ENTITY_CAPABILITY + '"]'
TIMEOUT = 15
class HashGenerationError(Exception):
pass
@ -169,6 +171,7 @@ class Discovery(object):
d = self.getItems(jid_, profile_key)
d.addCallback(gotItems)
d.addCallback(lambda dummy: found_entities)
reactor.callLater(TIMEOUT, d.cancel) # FIXME: one bad service make a general timeout
return d
def findFeaturesSet(self, features, category=None, type_=None, jid_=None, profile_key=C.PROF_KEY_NONE):
@ -213,6 +216,7 @@ class Discovery(object):
d = self.getItems(jid_, profile_key)
d.addCallback(gotItems)
d.addCallback(lambda dummy: found_entities)
reactor.callLater(TIMEOUT, d.cancel) # FIXME: one bad service make a general timeout
return d
def generateHash(self, services):