aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppStream.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/QXmppStream.cpp')
-rw-r--r--src/QXmppStream.cpp18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/QXmppStream.cpp b/src/QXmppStream.cpp
index fd1f38f9..e3d9d737 100644
--- a/src/QXmppStream.cpp
+++ b/src/QXmppStream.cpp
@@ -164,14 +164,13 @@ bool QXmppStream::sendData(const QByteArray &data)
bool QXmppStream::sendElement(const QDomElement &element)
{
// prepare packet
- QBuffer buffer;
- buffer.open(QIODevice::ReadWrite);
- QXmlStreamWriter writer(&buffer);
+ QByteArray data;
+ QXmlStreamWriter xmlStream(&data);
const QStringList omitNamespaces = QStringList() << ns_client << ns_server;
- helperToXmlAddDomElement(&writer, element, omitNamespaces);
+ helperToXmlAddDomElement(&xmlStream, element, omitNamespaces);
// send packet
- return sendData(buffer.data());
+ return sendData(data);
}
/// Sends an XMPP packet to the peer.
@@ -263,19 +262,18 @@ void QXmppStream::socketReadyRead()
endStreamRegex.setMinimal(true);
// check whether we need to add stream start / end elements
- QByteArray completeXml;
+ QByteArray completeXml = d->dataBuffer;
const QString strData = QString::fromUtf8(d->dataBuffer);
bool streamStart = false;
if(strData.contains(startStreamRegex))
{
- completeXml = d->dataBuffer + streamRootElementEnd;
streamStart = true;
d->streamStart = startStreamRegex.cap(0).toUtf8();
}
- else if(strData.contains(endStreamRegex))
- completeXml = d->streamStart + d->dataBuffer;
else
- completeXml = d->streamStart + d->dataBuffer + streamRootElementEnd;
+ completeXml.prepend(d->streamStart);
+ if(!strData.contains(endStreamRegex))
+ completeXml.append(streamRootElementEnd);
// check whether we have a valid XML document
QDomDocument doc;