From 8ef7188dae21f9ddde40365cdff8e046d7b4678a Mon Sep 17 00:00:00 2001 From: Lance Stout Date: Fri, 6 Jan 2012 23:30:14 -0500 Subject: [PATCH] Fix client_roster when the bare JID changes after binding. Adds session_bind event. --- sleekxmpp/clientxmpp.py | 9 +++++++++ sleekxmpp/features/feature_bind/bind.py | 1 + 2 files changed, 10 insertions(+) diff --git a/sleekxmpp/clientxmpp.py b/sleekxmpp/clientxmpp.py index 20012b5f..e3d210ae 100644 --- a/sleekxmpp/clientxmpp.py +++ b/sleekxmpp/clientxmpp.py @@ -97,6 +97,7 @@ class ClientXMPP(BaseXMPP): self.bindfail = False self.add_event_handler('connected', self._handle_connected) + self.add_event_handler('session_bind', self._handle_session_bind) self.register_stanza(StreamFeatures) @@ -288,6 +289,14 @@ class ClientXMPP(BaseXMPP): iq.send() return True + def _handle_session_bind(self, jid): + """Set the client roster to the JID set by the server. + + :param :class:`sleekxmpp.xmlstream.jid.JID` jid: The bound JID as + dictated by the server. The same as :attr:`boundjid`. + """ + self.client_roster = self.roster[jid] + # To comply with PEP8, method names now use underscores. # Deprecated method names are re-mapped for backwards compatibility. diff --git a/sleekxmpp/features/feature_bind/bind.py b/sleekxmpp/features/feature_bind/bind.py index d3b2b737..72897131 100644 --- a/sleekxmpp/features/feature_bind/bind.py +++ b/sleekxmpp/features/feature_bind/bind.py @@ -52,6 +52,7 @@ class feature_bind(base_plugin): self.xmpp.set_jid(response['bind']['jid']) self.xmpp.bound = True + self.xmpp.event('session_bind', self.xmpp.boundjid, direct=True) self.xmpp.features.add('bind')