Author: asterix Date: 2009-03-16 10:54:57 +0100 (Mon, 16 Mar 2009) New Revision: 11169
Modified: trunk/src/common/xmpp/auth_nb.py Log: prevent Traceback when server replies badly to resource binding request. Fixes #4880
Modified: trunk/src/common/xmpp/auth_nb.py =================================================================== --- trunk/src/common/xmpp/auth_nb.py 2009-03-16 09:37:40 UTC (rev 11168) +++ trunk/src/common/xmpp/auth_nb.py 2009-03-16 09:54:57 UTC (rev 11169) @@ -484,15 +484,17 @@
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: