From d19d557880990d174873926c9ca943a1140bec81 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Sat, 3 May 2008 18:01:53 +0000 Subject: [PATCH] Porting autoWHO fix (r809) from branches/0.3 to trunk. --- src/core/networkconnection.cpp | 13 ++++++++----- src/core/networkconnection.h | 4 ++-- version.inc | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/core/networkconnection.cpp b/src/core/networkconnection.cpp index 15b081cc..1adf827a 100644 --- a/src/core/networkconnection.cpp +++ b/src/core/networkconnection.cpp @@ -285,6 +285,7 @@ void NetworkConnection::socketError(QAbstractSocket::SocketError) { #ifndef QT_NO_OPENSSL void NetworkConnection::sslErrors(const QList &sslErrors) { + Q_UNUSED(sslErrors) socket.ignoreSslErrors(); /* TODO errorhandling QVariantMap errmsg; @@ -433,7 +434,7 @@ void NetworkConnection::sendAutoWho() { IrcChannel *ircchan = network()->ircChannel(chan); if(!ircchan) continue; if(_autoWhoNickLimit > 0 && ircchan->ircUsers().count() > _autoWhoNickLimit) continue; - _autoWhoInProgress.insert(chan); + _autoWhoInProgress[chan]++; putRawLine("WHO " + serverEncode(chan)); if(_autoWhoQueue.isEmpty() && _autoWhoEnabled && !_autoWhoCycleTimer.isActive()) { // Timer was stopped, means a new cycle is due immediately @@ -453,18 +454,20 @@ void NetworkConnection::startAutoWhoCycle() { } bool NetworkConnection::setAutoWhoDone(const QString &channel) { - return _autoWhoInProgress.remove(channel); + if(_autoWhoInProgress.value(channel.toLower(), 0) <= 0) return false; + _autoWhoInProgress[channel.toLower()]--; + return true; } void NetworkConnection::setChannelJoined(const QString &channel) { emit channelJoined(networkId(), channel, _channelKeys[channel.toLower()]); - _autoWhoQueue.prepend(channel); // prepend so this new chan is the first to be checked + _autoWhoQueue.prepend(channel.toLower()); // prepend so this new chan is the first to be checked } void NetworkConnection::setChannelParted(const QString &channel) { removeChannelKey(channel); - _autoWhoQueue.removeAll(channel); - _autoWhoInProgress.remove(channel); + _autoWhoQueue.removeAll(channel.toLower()); + _autoWhoInProgress.remove(channel.toLower()); emit channelParted(networkId(), channel); } diff --git a/src/core/networkconnection.h b/src/core/networkconnection.h index 959eb740..1002cd6f 100644 --- a/src/core/networkconnection.h +++ b/src/core/networkconnection.h @@ -86,7 +86,7 @@ public: inline QString channelKey(const QString &channel) const { return _channelKeys.value(channel.toLower(), QString()); } inline QStringList persistentChannels() const { return _channelKeys.keys(); } - inline bool isAutoWhoInProgress(const QString &channel) const { return _autoWhoInProgress.contains(channel); } + inline bool isAutoWhoInProgress(const QString &channel) const { return _autoWhoInProgress.value(channel.toLower(), 0); } public slots: // void setServerOptions(); @@ -176,7 +176,7 @@ private: bool _autoWhoEnabled; QStringList _autoWhoQueue; - QSet _autoWhoInProgress; + QHash _autoWhoInProgress; int _autoWhoInterval; int _autoWhoNickLimit; int _autoWhoDelay; diff --git a/version.inc b/version.inc index 641fb539..44ca5afa 100644 --- a/version.inc +++ b/version.inc @@ -5,7 +5,7 @@ quasselVersion = "0.2.0-beta1-pre"; quasselDate = "2008-05-03"; - quasselBuild = 808; + quasselBuild = 810; //! Minimum client build number the core needs clientBuildNeeded = 731; -- 2.20.1