aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/QXmppStream.cpp15
-rw-r--r--src/QXmppStream.h16
2 files changed, 19 insertions, 12 deletions
diff --git a/src/QXmppStream.cpp b/src/QXmppStream.cpp
index 2edcca6f..bdcd61c3 100644
--- a/src/QXmppStream.cpp
+++ b/src/QXmppStream.cpp
@@ -57,6 +57,7 @@
#include <QXmlStreamWriter>
#include <QTimer>
+static bool randomSeeded = false;
static const QString capabilitiesNode = "http://code.google.com/p/qxmpp";
static const QByteArray streamRootElementEnd = "</stream:stream>";
@@ -102,7 +103,11 @@ QXmppStream::QXmppStream(QSslSocket *socket, QObject *parent)
d(new QXmppStreamPrivate)
{
// Make sure the random number generator is seeded
- qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
+ if (!randomSeeded)
+ {
+ qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
+ randomSeeded = true;
+ }
// initialise logger
setLogger(QXmppLogger::getLogger());
@@ -807,12 +812,12 @@ void QXmppStream::handleStanza(const QDomElement &nodeRecv)
}
}
-void QXmppStream::sendStartStream()
+bool QXmppStream::sendStartStream()
{
QByteArray data = "<?xml version='1.0'?><stream:stream to='";
data.append(configuration().domain());
data.append("' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>");
- sendData(data);
+ return sendData(data);
}
bool QXmppStream::sendData(const QByteArray& packet)
@@ -1003,9 +1008,9 @@ bool QXmppStream::sendPacket(const QXmppPacket& packet)
return sendData(data);
}
-void QXmppStream::sendEndStream()
+bool QXmppStream::sendEndStream()
{
- sendData(streamRootElementEnd);
+ return sendData(streamRootElementEnd);
}
void QXmppStream::pingStart()
diff --git a/src/QXmppStream.h b/src/QXmppStream.h
index 79d4802c..d7d0d38d 100644
--- a/src/QXmppStream.h
+++ b/src/QXmppStream.h
@@ -130,8 +130,16 @@ signals:
void jingleIqReceived(const QXmppJingleIq&);
protected:
+ // Logging helpers
+ void debug(const QString&);
+ void info(const QString&);
+ void warning(const QString&);
+
+ // Overridable methods
virtual void handleStanza(const QDomElement &element);
virtual void handleStream(const QDomElement &element);
+ virtual bool sendStartStream();
+ virtual bool sendEndStream();
private slots:
void socketHostFound();
@@ -149,12 +157,8 @@ private slots:
private:
QXmppDiscoveryIq capabilities() const;
- void debug(const QString&);
- void info(const QString&);
- void warning(const QString&);
+ void flushDataBuffer();
void parser(const QByteArray&);
- void sendStartStream();
- void sendEndStream();
void sendNonSASLAuth(bool plaintext);
void sendNonSASLAuthQuery();
void sendAuthDigestMD5ResponseStep1(const QString& challenge);
@@ -162,8 +166,6 @@ private:
void sendBindIQ();
void sendSessionIQ();
- void flushDataBuffer();
-
QXmppStreamPrivate * const d;
};