]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree.cpp
Improved strhashcomp with no allocations
[user/henk/code/inspircd.git] / src / modules / m_spanningtree.cpp
index 24997b93972c2628467e03fc1bb722ea2252ea7f..177ef2123827b4ea48311f53d91a25b709f6ebe4 100644 (file)
@@ -1109,13 +1109,25 @@ class TreeSocket : public InspSocket
                clientlist[tempnick]->registered = 7;
                clientlist[tempnick]->signon = age;
                strlcpy(clientlist[tempnick]->modes, modes.c_str(),53);
+               for (char *v = clientlist[tempnick]->modes; *v; v++)
+               {
+                       switch (*v)
+                       {
+                               case 'i':
+                                       clientlist[tempnick]->modebits |= UM_INVISIBLE;
+                               break;
+                               case 'w':
+                                       clientlist[tempnick]->modebits |= UM_WALLOPS;
+                               break;
+                               case 's':
+                                       clientlist[tempnick]->modebits |= UM_SERVERNOTICE;
+                               break;
+                               default:
+                               break;
+                       }
+               }
                inet_aton(params[6].c_str(),&clientlist[tempnick]->ip4);
 
-               ucrec a;
-               a.channel = NULL;
-               a.uc_modes = 0;
-               clientlist[tempnick]->chans.resize(MAXCHANS);
-
                WriteOpers("*** Client connecting at %s: %s!%s@%s [%s]",clientlist[tempnick]->server,clientlist[tempnick]->nick,clientlist[tempnick]->ident,clientlist[tempnick]->host,(char*)inet_ntoa(clientlist[tempnick]->ip4));
 
                params[7] = ":" + params[7];
@@ -2958,19 +2970,21 @@ class ModuleSpanningTree : public Module
 
        void HandleLusers(char** parameters, int pcnt, userrec* user)
        {
+               unsigned int n_users = usercnt();
+
                /* Only update these when someone wants to see them, more efficient */
                if ((unsigned int)local_count() > max_local)
                        max_local = local_count();
-               if (clientlist.size() > max_global)
-                       max_global = clientlist.size();
+               if (n_users > max_global)
+                       max_global = n_users;
 
-               WriteServ(user->fd,"251 %s :There are %d users and %d invisible on %d servers",user->nick,usercnt()-usercount_invisible(),usercount_invisible(),this->CountServs());
+               WriteServ(user->fd,"251 %s :There are %d users and %d invisible on %d servers",user->nick,n_users-usercount_invisible(),usercount_invisible(),this->CountServs());
                WriteServ(user->fd,"252 %s %d :operator(s) online",user->nick,usercount_opers());
                WriteServ(user->fd,"253 %s %d :unknown connections",user->nick,usercount_unknown());
                WriteServ(user->fd,"254 %s %d :channels formed",user->nick,chancount());
                WriteServ(user->fd,"254 %s :I have %d clients and %d servers",user->nick,local_count(),this->CountLocalServs());
                WriteServ(user->fd,"265 %s :Current Local Users: %d  Max: %d",user->nick,local_count(),max_local);
-               WriteServ(user->fd,"266 %s :Current Global Users: %d  Max: %d",user->nick,usercnt(),max_global);
+               WriteServ(user->fd,"266 %s :Current Global Users: %d  Max: %d",user->nick,n_users,max_global);
                return;
        }