]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Added 557 numeric (from MS Exchange chat server) to indicate too many results from...
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Fri, 27 May 2005 01:24:54 +0000 (01:24 +0000)
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Fri, 27 May 2005 01:24:54 +0000 (01:24 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@1534 e03df62e-2008-0410-955e-edbf42e46eb7

src/commands.cpp

index 58597c2a039429974dd254ac9cb760089f78c99c..7e3a7f09b780f59656a44d97d21456f20f7b2603 100644 (file)
@@ -528,7 +528,7 @@ void handle_topic(char **parameters, int pcnt, userrec *user)
                                strlcpy(topic,parameters[1],MAXBUF);
                                if (strlen(topic)>MAXTOPIC)
                                {
-                                       topic[MAXTOPIC-1] = '\0';
+                                       topic[MAXTOPIC] = '\0';
                                }
 
                                 if (!strcasecmp(user->server,ServerName))
@@ -990,7 +990,10 @@ void handle_who(char **parameters, int pcnt, userrec *user)
                                                WriteServ(user->fd,"352 %s %s %s %s %s %s %s :0 %s",user->nick, Ptr ? Ptr->name : "*", i->second->ident, i->second->dhost, i->second->server, i->second->nick, tmp, i->second->fullname);
                                                n_list++;
                                                if (n_list > MaxWhoResults)
+                                               {
+                                                       WriteServ(user->fd,"557 %s WHO :Command aborted: More results than configured limit",user->nick);
                                                        break;
+                                               }
                                        }
                                }
                        }
@@ -1009,6 +1012,7 @@ void handle_who(char **parameters, int pcnt, userrec *user)
                        Ptr = FindChan(parameters[0]);
                        if (Ptr)
                        {
+                               int n_list = 0;
                                for (user_hash::const_iterator i = clientlist.begin(); i != clientlist.end(); i++)
                                {
                                        if ((has_channel(i->second,Ptr)) && (isnick(i->second->nick)))
@@ -1023,6 +1027,13 @@ void handle_who(char **parameters, int pcnt, userrec *user)
                                                if (strchr(i->second->modes,'o')) { strlcat(tmp, "*", 9); }
                                                strlcat(tmp, cmode(i->second, Ptr),5);
                                                WriteServ(user->fd,"352 %s %s %s %s %s %s %s :0 %s",user->nick, Ptr->name, i->second->ident, i->second->dhost, i->second->server, i->second->nick, tmp, i->second->fullname);
+                                                n_list++;
+                                                if (n_list > MaxWhoResults)
+                                                {
+                                                        WriteServ(user->fd,"557 %s WHO :Command aborted: More results than configured limit",user->nick);
+                                                        break;
+                                                }
+
                                        }
                                }
                                WriteServ(user->fd,"315 %s %s :End of /WHO list.",user->nick, parameters[0]);