]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - src/s_user.c
Automated merge with ssh://hg.atheme.org//hg/charybdis
[irc/rqf/shadowircd.git] / src / s_user.c
index 91f30dd83c8d4786b840589f77097f75b20b73d9..ef413d514b5b2bbd4d8256322388b5bdda4203b6 100644 (file)
@@ -21,7 +21,7 @@
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
  *  USA
  *
- *  $Id: s_user.c 3414 2007-04-15 16:54:50Z jilles $
+ *  $Id: s_user.c 3586 2007-11-20 11:16:43Z nenolod $
  */
 
 #include "stdinc.h"
@@ -147,6 +147,14 @@ int user_modes[256] = {
 int
 show_lusers(struct Client *source_p)
 {
+       if(dlink_list_length(&lclient_list) > (unsigned long)MaxClientCount)
+               MaxClientCount = dlink_list_length(&lclient_list);
+
+       if((dlink_list_length(&lclient_list) + dlink_list_length(&serv_list)) >
+          (unsigned long)MaxConnectionCount)
+               MaxConnectionCount = dlink_list_length(&lclient_list) + 
+                                       dlink_list_length(&serv_list);
+
        sendto_one_numeric(source_p, RPL_LUSERCLIENT, form_str(RPL_LUSERCLIENT),
                           (Count.total - Count.invisi),
                           Count.invisi, dlink_list_length(&global_serv_list));
@@ -185,14 +193,6 @@ show_lusers(struct Client *source_p)
                           MaxConnectionCount, MaxClientCount, 
                           Count.totalrestartcount);
 
-       if(dlink_list_length(&lclient_list) > (unsigned long)MaxClientCount)
-               MaxClientCount = dlink_list_length(&lclient_list);
-
-       if((dlink_list_length(&lclient_list) + dlink_list_length(&serv_list)) >
-          (unsigned long)MaxConnectionCount)
-               MaxConnectionCount = dlink_list_length(&lclient_list) + 
-                                       dlink_list_length(&serv_list);
-
        return 0;
 }
 
@@ -464,6 +464,8 @@ register_local_user(struct Client *client_p, struct Client *source_p, const char
                                     "Invalid username: %s (%s@%s)",
                                     source_p->name, source_p->username, source_p->host);
                ServerStats->is_ref++;
+               sendto_one_notice(source_p, ":*** Your username is invalid. Please make sure that your username contains "
+                                           "only alphanumeric characters.");
                ircsprintf(tmpstr2, "Invalid username [%s]", source_p->username);
                exit_client(client_p, source_p, &me, tmpstr2);
                return (CLIENT_EXITED);
@@ -528,15 +530,17 @@ register_local_user(struct Client *client_p, struct Client *source_p, const char
                Count.invisi++;
 
        s_assert(!IsClient(source_p));
+       del_unknown_ip(source_p);
        dlinkMoveNode(&source_p->localClient->tnode, &unknown_list, &lclient_list);
        SetClient(source_p);
 
-       /* XXX source_p->servptr is &me, since local client */
-       source_p->servptr = find_server(NULL, user->server);
+       source_p->servptr = &me;
        dlinkAdd(source_p, &source_p->lnode, &source_p->servptr->serv->users);
+
        /* Increment our total user count here */
        if(++Count.total > Count.max_tot)
                Count.max_tot = Count.total;
+
        source_p->localClient->allow_read = MAX_FLOOD_BURST;
 
        Count.totalrestartcount++;
@@ -633,7 +637,7 @@ introduce_client(struct Client *client_p, struct Client *source_p, struct User *
                              nick, source_p->hopcount + 1,
                              (long) source_p->tsinfo,
                              ubuf, source_p->username, source_p->host,
-                             user->server, source_p->info);
+                             source_p->servptr->name, source_p->info);
        }
        else
                sendto_server(client_p, NULL, NOCAPS, NOCAPS,
@@ -641,7 +645,7 @@ introduce_client(struct Client *client_p, struct Client *source_p, struct User *
                              nick, source_p->hopcount + 1,
                              (long) source_p->tsinfo,
                              ubuf, source_p->username, source_p->host,
-                             user->server, source_p->info);
+                             source_p->servptr->name, source_p->info);
 
        if (IsDynSpoof(source_p))
        {