Keep old clients from removing message rate delay
authorShane Synan <digitalcircuit36939@gmail.com>
Thu, 22 Sep 2016 01:24:48 +0000 (20:24 -0500)
committerManuel Nickschas <sputnick@quassel-irc.org>
Thu, 13 Oct 2016 20:08:16 +0000 (22:08 +0200)
Add a guard against zero message delay in setMessageRateDelay,
following the error-checking of setMessageRateBurstSize.  This blocks
old clients from setting message rate delay to 0 seconds for newly-
created networks, improperly overriding the default of 2.2 seconds.

This affects creating a network in an old client, switching to a new
client, then enabling custom rate-limits.

The supported method for removing rate limits by setting Unlimited to
true still works.

Resolves GH-252.

src/common/network.cpp

index 4e14af4..d768837 100644 (file)
@@ -707,9 +707,10 @@ void Network::setUseCustomMessageRate(bool useCustomRate)
 void Network::setMessageRateBurstSize(quint32 burstSize)
 {
     if (burstSize < 1) {
-        // Can't go slower than one message at a time
-        qWarning() << "Received invalid setMessageRateBurstSize data, cannot have zero message "
-                      "burst size!" << burstSize;
+        // Can't go slower than one message at a time.  Also blocks old clients from trying to set
+        // this to 0.
+        qWarning() << "Received invalid setMessageRateBurstSize data - message burst size must be "
+                      "non-zero positive, given" << burstSize;
         return;
     }
     if (_messageRateBurstSize != burstSize) {
@@ -723,6 +724,13 @@ void Network::setMessageRateBurstSize(quint32 burstSize)
 
 void Network::setMessageRateDelay(quint32 messageDelay)
 {
+    if (messageDelay == 0) {
+        // Nonsensical to have no delay - just check the Unlimited box instead.  Also blocks old
+        // clients from trying to set this to 0.
+        qWarning() << "Received invalid setMessageRateDelay data - message delay must be non-zero "
+                      "positive, given" << messageDelay;
+        return;
+    }
     if (_messageRateDelay != messageDelay) {
         _messageRateDelay = messageDelay;
         SYNC(ARG(messageDelay))