diff options
author | mathieui <mathieui@mathieui.net> | 2016-05-28 14:46:39 +0200 |
---|---|---|
committer | mathieui <mathieui@mathieui.net> | 2016-05-28 14:46:39 +0200 |
commit | 49054070922958141808c48e9204cd5cdf6ca164 (patch) | |
tree | 0f6164482dee03341d535ad71ff2a7d51a0d7e6c /slixmpp/features/feature_bind | |
parent | bd6ec1093907b5922199be490cc06d802aa224fd (diff) | |
download | slixmpp-49054070922958141808c48e9204cd5cdf6ca164.tar.gz slixmpp-49054070922958141808c48e9204cd5cdf6ca164.tar.bz2 slixmpp-49054070922958141808c48e9204cd5cdf6ca164.tar.xz slixmpp-49054070922958141808c48e9204cd5cdf6ca164.zip |
Fix the ordering of stream features
since iq.send is non-blocking, some features handlers could end up
being executed before others were set, leading to issues. Adding yield
from where it’s necessary fixes that.
Diffstat (limited to 'slixmpp/features/feature_bind')
-rw-r--r-- | slixmpp/features/feature_bind/bind.py | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/slixmpp/features/feature_bind/bind.py b/slixmpp/features/feature_bind/bind.py index c031ab72..e837ee0a 100644 --- a/slixmpp/features/feature_bind/bind.py +++ b/slixmpp/features/feature_bind/bind.py @@ -6,6 +6,7 @@ See the file LICENSE for copying permission. """ +import asyncio import logging from slixmpp.jid import JID @@ -34,6 +35,7 @@ class FeatureBind(BasePlugin): register_stanza_plugin(Iq, stanza.Bind) register_stanza_plugin(StreamFeatures, stanza.Bind) + @asyncio.coroutine def _handle_bind_resource(self, features): """ Handle requesting a specific resource. @@ -49,7 +51,7 @@ class FeatureBind(BasePlugin): if self.xmpp.requested_jid.resource: iq['bind']['resource'] = self.xmpp.requested_jid.resource - iq.send(callback=self._on_bind_response) + yield from iq.send(callback=self._on_bind_response) def _on_bind_response(self, response): self.xmpp.boundjid = JID(response['bind']['jid']) |