summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLance Stout <lancestout@gmail.com>2011-02-13 16:30:57 -0500
committerLance Stout <lancestout@gmail.com>2011-02-13 16:30:57 -0500
commit34f6195ca5a042ac61aa20af0b339a6654e2ffdd (patch)
tree4e38c5b28177844070436086fdf74df7381cb66f
parent70af52d74c3f4253791120be4016f108aa966b4d (diff)
downloadslixmpp-34f6195ca5a042ac61aa20af0b339a6654e2ffdd.tar.gz
slixmpp-34f6195ca5a042ac61aa20af0b339a6654e2ffdd.tar.bz2
slixmpp-34f6195ca5a042ac61aa20af0b339a6654e2ffdd.tar.xz
slixmpp-34f6195ca5a042ac61aa20af0b339a6654e2ffdd.zip
Return the name of the registered callback.
Instead of the actual callback object, return just the name of the callback object created when using iq.send(callback=..). This will help prevent memory leaks by not keeping an additional reference to the object, but still allows for the callback to be canceled by using self.remove_handler("handler_name").
-rw-r--r--sleekxmpp/stanza/iq.py5
1 files changed, 3 insertions, 2 deletions
diff --git a/sleekxmpp/stanza/iq.py b/sleekxmpp/stanza/iq.py
index 7a8b997b..330df6c2 100644
--- a/sleekxmpp/stanza/iq.py
+++ b/sleekxmpp/stanza/iq.py
@@ -189,13 +189,14 @@ class Iq(RootStanza):
if timeout is None:
timeout = self.stream.response_timeout
if callback is not None and self['type'] in ('get', 'set'):
- handler = Callback('IqCallback_%s' % self['id'],
+ handler_name = 'IqCallback_%s' % self['id']
+ handler = Callback(handler_name,
MatcherId(self['id']),
callback,
once=True)
self.stream.register_handler(handler)
StanzaBase.send(self)
- return handler
+ return handler_name
elif block and self['type'] in ('get', 'set'):
waitfor = Waiter('IqWait_%s' % self['id'], MatcherId(self['id']))
self.stream.register_handler(waitfor)