From 9b5c8db2ce15257bffd4c594010103068fd6c56f Mon Sep 17 00:00:00 2001 From: Yann Leboulanger Date: Mon, 16 Mar 2009 09:54:57 +0000 Subject: [PATCH] prevent Traceback when server replies badly to resource binding request. Fixes #4880 --- src/common/xmpp/auth_nb.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/common/xmpp/auth_nb.py b/src/common/xmpp/auth_nb.py index cfbc3d43c..7c89b3b73 100644 --- a/src/common/xmpp/auth_nb.py +++ b/src/common/xmpp/auth_nb.py @@ -484,15 +484,17 @@ class NonBlockingBind(PlugIn): def _on_bound(self, resp): if isResultNode(resp): - self.bound.append(resp.getTag('bind').getTagData('jid')) - log.info('Successfully bound %s.' % self.bound[-1]) - jid = JID(resp.getTag('bind').getTagData('jid')) - self._owner.User = jid.getNode() - self._owner.Resource = jid.getResource() - self._owner.SendAndWaitForResponse(Protocol('iq', typ='set', - payload=[Node('session', attrs={'xmlns':NS_SESSION})]), - func=self._on_session) - elif resp: + if resp.getTag('bind') and resp.getTag('bind').getTagData('jid'): + self.bound.append(resp.getTag('bind').getTagData('jid')) + log.info('Successfully bound %s.' % self.bound[-1]) + jid = JID(resp.getTag('bind').getTagData('jid')) + self._owner.User = jid.getNode() + self._owner.Resource = jid.getResource() + self._owner.SendAndWaitForResponse(Protocol('iq', typ='set', + payload=[Node('session', attrs={'xmlns':NS_SESSION})]), + func=self._on_session) + return + if resp: log.error('Binding failed: %s.' % resp.getTag('error')) self.on_bound(None) else: