From e2be03e254a956024c9d67b19b8a809c9692b6f1 Mon Sep 17 00:00:00 2001 From: Manjeet Dahiya Date: Tue, 20 Oct 2009 11:43:45 +0000 Subject: Using QXmlStreamWriter for directly writing to the socket. This will avoid string concatenations and problems with XML escaping rules. and Fix for Issue 19: XMPP Version < 1.0 send NonSASL Auth query --- source/QXmppStanza.cpp | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) (limited to 'source/QXmppStanza.cpp') diff --git a/source/QXmppStanza.cpp b/source/QXmppStanza.cpp index 039dafe9..c83bfaa8 100644 --- a/source/QXmppStanza.cpp +++ b/source/QXmppStanza.cpp @@ -26,7 +26,7 @@ #include "QXmppUtils.h" #include "QXmppConstants.h" -#include +#include int QXmppStanza::s_uniqeIdNo = 0; @@ -217,38 +217,33 @@ void QXmppStanza::Error::setConditionFromStr(const QString& type) setCondition(static_cast(-1)); } -QString QXmppStanza::Error::toXml() const +void QXmppStanza::Error::toXml( QXmlStreamWriter *writer ) const { - QString data; QString cond = getConditionStr(); QString type = getTypeStr(); if(cond.isEmpty() && type.isEmpty()) - return data; + return; - QTextStream stream(&data); - - stream << ""; + writer->writeStartElement("error"); + helperToXmlAddAttribute(writer,"type", type); if(!cond.isEmpty()) { - stream << "<" << cond; - helperToXmlAddAttribute(stream, "xmlns", ns_stanza); - stream << "/>"; + writer->writeStartElement(cond); + helperToXmlAddAttribute(writer,"xmlns", ns_stanza); + writer->writeEndElement(); } if(!m_text.isEmpty()) { - stream << ""; - stream << m_text; - stream << ""; + writer->writeStartElement("text"); + helperToXmlAddAttribute(writer,"xml:lang", "en"); + helperToXmlAddAttribute(writer,"xmlns", ns_stanza); + writer->writeCharacters(m_text); + writer->writeEndElement(); } - stream << ""; - return data; + + writer->writeEndElement(); } -- cgit v1.2.3