void ClientConnectionErrorMgr::HandleError (const QXmppIq& iq) { const QXmppStanza::Error& error = iq.error (); if (!WhitelistedErrors_.remove (iq.id ())) switch (error.condition ()) { case QXmppStanza::Error::FeatureNotImplemented: case QXmppStanza::Error::ItemNotFound: case QXmppStanza::Error::ServiceUnavailable: return; default: break; } QString typeText; if (!iq.from ().isEmpty ()) typeText = tr ("Error from %1: ") .arg (iq.from ()); typeText += HandleErrorCondition (error.condition ()); if (!error.text ().isEmpty ()) typeText += " " + tr ("Error text: %1.") .arg (error.text ()); const Entity& e = Util::MakeNotification ("Azoth", typeText, PCritical_); Core::Instance ().SendEntity (e); const bool dontTryFurther = error.type () == QXmppStanza::Error::Cancel || (error.type () == QXmppStanza::Error::Auth && error.condition () != QXmppStanza::Error::NotAuthorized); if (dontTryFurther && !ClientConn_->GetClient ()->isConnected ()) { GlooxAccountState state = { SOffline, QString (), 0 }; ClientConn_->SetState (state); } }
void tst_QXmppIq::testBasic() { QFETCH(QByteArray, xml); QFETCH(int, type); QXmppIq iq; parsePacket(iq, xml); QCOMPARE(iq.to(), QString("[email protected]/QXmpp")); QCOMPARE(iq.from(), QString("[email protected]/QXmpp")); QCOMPARE(int(iq.type()), type); serializePacket(iq, xml); }