From 0acf07023dca6b6d35c347cb28dce44a04363019 Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Fri, 13 Aug 2010 11:23:19 +0000 Subject: * don't initialise random number generator multiple times, breaks randomness * make QXmppStream easier to subclass, e.g. for a server --- src/QXmppStream.cpp | 15 ++++++++++----- src/QXmppStream.h | 16 +++++++++------- 2 files changed, 19 insertions(+), 12 deletions(-) (limited to 'src') 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 #include +static bool randomSeeded = false; static const QString capabilitiesNode = "http://code.google.com/p/qxmpp"; static const QByteArray streamRootElementEnd = ""; @@ -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 = ""); - 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; }; -- cgit v1.2.3