'SASL challenge received. Process and send response.'

def _handle_challenge(self, stanza):

    resp = self.stanza.Response(self.xmpp)
    try:
        resp['value'] = self.mech.process(stanza['value'])
    except sasl.SASLCancelled:
        self.stanza.Abort(self.xmpp).send()
    except sasl.SASLMutualAuthFailed:
        log.error(('Mutual    authentication    failed!    ' + 'A    security    breach    is    possible.'))
        self.attempted_mechs.add(self.mech.name)
        self.xmpp.disconnect()
    except sasl.SASLFailed:
        self.stanza.Abort(self.xmpp).send()
    else:
        if (resp.get_value() == ''):
            resp.del_value()
        resp.send(now=True)
