From ab03ad54aaca1725b943abf16585fa4ef6f08897 Mon Sep 17 00:00:00 2001 From: Florent Le Coz Date: Wed, 30 Jul 2014 17:52:59 +0200 Subject: Fix the iq.send() function, and a bunch of places where it is called This is a big-and-dirty commit with a bunch of cleanup, maybe breaking a few things, and not fixing all iq.send() calls yet. --- slixmpp/clientxmpp.py | 37 +++++++++++-------------------------- 1 file changed, 11 insertions(+), 26 deletions(-) (limited to 'slixmpp/clientxmpp.py') diff --git a/slixmpp/clientxmpp.py b/slixmpp/clientxmpp.py index fa36ad56..add7f437 100644 --- a/slixmpp/clientxmpp.py +++ b/slixmpp/clientxmpp.py @@ -221,19 +221,11 @@ class ClientXMPP(BaseXMPP): """ return self.client_roster.remove(jid) - def get_roster(self, block=True, timeout=None, callback=None): + def get_roster(self, callback=None, timeout=None, timeout_callback=None): """Request the roster from the server. - :param block: Specify if the roster request will block until a - response is received, or a timeout occurs. - Defaults to ``True``. - :param timeout: The length of time (in seconds) to wait for a response - before continuing if blocking is used. - Defaults to - :attr:`~slixmpp.xmlstream.xmlstream.XMLStream.response_timeout`. - :param callback: Optional reference to a stream handler function. Will + :param callback: Reference to a stream handler function. Will be executed when the roster is received. - Implies ``block=False``. """ iq = self.Iq() iq['type'] = 'get' @@ -241,23 +233,16 @@ class ClientXMPP(BaseXMPP): if 'rosterver' in self.features: iq['roster']['ver'] = self.client_roster.version + if callback is None: + callback = lambda resp: self.event('roster_update', resp) + else: + orig_cb = callback + def wrapped(resp): + self.event('roster_update', resp) + orig_cb(resp) + callback = wrapped - if not block or callback is not None: - block = False - if callback is None: - callback = lambda resp: self.event('roster_update', resp) - else: - orig_cb = callback - def wrapped(resp): - self.event('roster_update', resp) - orig_cb(resp) - callback = wrapped - - response = iq.send(block, timeout, callback) - - if block: - self.event('roster_update', response) - return response + iq.send(callback, timeout, timeout_callback) def _reset_connection_state(self, event=None): #TODO: Use stream state here -- cgit v1.2.3