Porting autoWHO fix (r809) from branches/0.3 to trunk.
authorManuel Nickschas <sputnick@quassel-irc.org>
Sat, 3 May 2008 18:01:53 +0000 (18:01 +0000)
committerManuel Nickschas <sputnick@quassel-irc.org>
Sat, 3 May 2008 18:01:53 +0000 (18:01 +0000)
src/core/networkconnection.cpp
src/core/networkconnection.h
version.inc

index 15b081c..1adf827 100644 (file)
@@ -285,6 +285,7 @@ void NetworkConnection::socketError(QAbstractSocket::SocketError) {
 #ifndef QT_NO_OPENSSL
 
 void NetworkConnection::sslErrors(const QList<QSslError> &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);
 }
 
index 959eb74..1002cd6 100644 (file)
@@ -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<QString> _autoWhoInProgress;
+  QHash<QString, int> _autoWhoInProgress;
   int _autoWhoInterval;
   int _autoWhoNickLimit;
   int _autoWhoDelay;
index 641fb53..44ca5af 100644 (file)
@@ -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;