bool take(const QDomElement& x) { if(!iqVerify(x, myjid_, id())) // , "urn:xmpp:ping" return false; if(x.attribute("type") == "result") { // something bad, we never reply to this stanza so someone // else got it. // FIXME seems to be no longer true //emit result(NotUs, id()); emit result(LoggedIn, id()); setSuccess(); } else if(x.attribute("type") == "get") { // All went well! emit result(LoggedIn, id()); setSuccess(); } else { QDomElement tag = x.firstChildElement("error"); if(tag.isNull()) { emit result(OtherErr, id()); } else { XMPP::Stanza::Error err; err.fromXml(tag, client()->stream().baseNS()); if (err.condition == XMPP::Stanza::Error::ItemNotFound) { emit result(NoSuch, id()); } else if (err.condition == XMPP::Stanza::Error::NotAcceptable ) { emit result(NotOccupant, id()); } else { emit result(OtherErr, id()); } setSuccess(); } } return true; }
void getErrorFromElement(const QDomElement &e, const QString &baseNS, int *code, QString *str) { QDomElement tag = e.firstChildElement("error"); if(tag.isNull()) return; XMPP::Stanza::Error err; err.fromXml(tag, baseNS); if(code) *code = err.code(); if(str) { QPair<QString, QString> desc = err.description(); if (err.text.isEmpty()) *str = desc.first + ".\n" + desc.second; else *str = desc.first + ".\n" + desc.second + "\n" + err.text; } }
void getErrorFromElement(const QDomElement &e, const QString &baseNS, int *code, QString *str) { bool found; QDomElement tag = findSubTag(e, "error", &found); if(!found) return; XMPP::Stanza::Error err; err.fromXml(tag, baseNS); if(code) *code = err.code(); if(str) { QPair<QString, QString> desc = err.description(); if (err.text.isEmpty()) *str = desc.first + ".\n" + desc.second; else *str = desc.first + ".\n" + desc.second + "\n" + err.text; } }