]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/users.cpp
Bump to rc3 in preperation for release Real Soon (tm). Developers, please look at...
[user/henk/code/inspircd.git] / src / users.cpp
index 6bafe5738543c0a1df1fcad47a72763bbfa2fcdd..c84bc00d9334f12d8f602b07e3fead71a0d48270 100644 (file)
@@ -612,7 +612,7 @@ bool User::AddBuffer(const std::string &a)
        if (this->MyClass && !this->HasPrivPermission("users/flood/increased-buffers") && recvq.length() > this->MyClass->GetRecvqMax())
        {
                ServerInstance->Users->QuitUser(this, "RecvQ exceeded");
-               ServerInstance->SNO->WriteToSnoMask('A', "User %s RecvQ of %lu exceeds connect class maximum of %lu",this->nick.c_str(),(unsigned long int)recvq.length(),this->MyClass->GetRecvqMax());
+               ServerInstance->SNO->WriteToSnoMask('a', "User %s RecvQ of %lu exceeds connect class maximum of %lu",this->nick.c_str(),(unsigned long int)recvq.length(),this->MyClass->GetRecvqMax());
                return false;
        }
 
@@ -671,10 +671,7 @@ std::string User::GetBuffer()
 
 void User::AddWriteBuf(const std::string &data)
 {
-       if (this->quitting)
-               return;
-
-       if (this->MyClass && !this->HasPrivPermission("users/flood/increased-buffers") && sendq.length() + data.length() > this->MyClass->GetSendqMax())
+       if (!this->quitting && this->MyClass && !this->HasPrivPermission("users/flood/increased-buffers") && sendq.length() + data.length() > this->MyClass->GetSendqMax())
        {
                /*
                 * Fix by brain - Set the error text BEFORE calling, because
@@ -682,10 +679,13 @@ void User::AddWriteBuf(const std::string &data)
                 * to repeatedly add the text to the sendq!
                 */
                ServerInstance->Users->QuitUser(this, "SendQ exceeded");
-               ServerInstance->SNO->WriteToSnoMask('A', "User %s SendQ of %lu exceeds connect class maximum of %lu",this->nick.c_str(),(unsigned long int)sendq.length() + data.length(),this->MyClass->GetSendqMax());
+               ServerInstance->SNO->WriteToSnoMask('a', "User %s SendQ of %lu exceeds connect class maximum of %lu",this->nick.c_str(),(unsigned long int)sendq.length() + data.length(),this->MyClass->GetSendqMax());
                return;
        }
 
+       // We still want to append data to the sendq of a quitting user,
+       // e.g. their ERROR message that says 'closing link'
+
        if (data.length() > MAXBUF - 2) /* MAXBUF has a value of 514, to account for line terminators */
                sendq.append(data.substr(0,MAXBUF - 4)).append("\r\n"); /* MAXBUF-4 = 510 */
        else
@@ -902,13 +902,13 @@ void User::CheckClass()
        else if ((a->GetMaxLocal()) && (ServerInstance->Users->LocalCloneCount(this) > a->GetMaxLocal()))
        {
                ServerInstance->Users->QuitUser(this, "No more connections allowed from your host via this connect class (local)");
-               ServerInstance->SNO->WriteToSnoMask('A', "WARNING: maximum LOCAL connections (%ld) exceeded for IP %s", a->GetMaxLocal(), this->GetIPString());
+               ServerInstance->SNO->WriteToSnoMask('a', "WARNING: maximum LOCAL connections (%ld) exceeded for IP %s", a->GetMaxLocal(), this->GetIPString());
                return;
        }
        else if ((a->GetMaxGlobal()) && (ServerInstance->Users->GlobalCloneCount(this) > a->GetMaxGlobal()))
        {
                ServerInstance->Users->QuitUser(this, "No more connections allowed from your host via this connect class (global)");
-               ServerInstance->SNO->WriteToSnoMask('A', "WARNING: maximum GLOBAL connections (%ld) exceeded for IP %s", a->GetMaxGlobal(), this->GetIPString());
+               ServerInstance->SNO->WriteToSnoMask('a', "WARNING: maximum GLOBAL connections (%ld) exceeded for IP %s", a->GetMaxGlobal(), this->GetIPString());
                return;
        }