]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/channels.cpp
Merge pull request #1157 from SaberUK/insp20+fix-cron-restart
[user/henk/code/inspircd.git] / src / channels.cpp
index 73d408fb851e5596b48fe9dc7e3b44f837a80407..9f1eafd0cb1f1e9654a8d3890310a46ac98af26a 100644 (file)
@@ -202,10 +202,18 @@ void Channel::SetDefaultModes()
                if (mode)
                {
                        if (mode->GetNumParams(true))
+                       {
                                list.GetToken(parameter);
+                               // If the parameter begins with a ':' then it's invalid
+                               if (parameter.c_str()[0] == ':')
+                                       continue;
+                       }
                        else
                                parameter.clear();
 
+                       if ((mode->GetNumParams(true)) && (parameter.empty()))
+                               continue;
+
                        mode->OnModeChange(ServerInstance->FakeClient, ServerInstance->FakeClient, this, parameter, true);
                }
        }
@@ -783,6 +791,7 @@ void Channel::UserList(User *user)
         */
        bool has_user = this->HasUser(user);
 
+       const size_t maxlen = MAXBUF - 10 - ServerInstance->Config->ServerName.size();
        std::string prefixlist;
        std::string nick;
        for (UserMembIter i = userlist.begin(); i != userlist.end(); ++i)
@@ -807,7 +816,7 @@ void Channel::UserList(User *user)
                if (nick.empty())
                        continue;
 
-               if (list.size() + prefixlist.length() + nick.length() + 1 > 480)
+               if (list.size() + prefixlist.length() + nick.length() + 1 > maxlen)
                {
                        /* list overflowed into multiple numerics */
                        user->WriteNumeric(RPL_NAMREPLY, list);