]> jfr.im git - solanum.git/blobdiff - modules/m_user.c
Merge pull request #279 from edk0/operhide
[solanum.git] / modules / m_user.c
index a70720545e67042761680257cd2ace73bf67b55f..fc657c9ba62e089cf92a0c2cbf7d03926874be9a 100644 (file)
 #include "msg.h"
 #include "parse.h"
 #include "modules.h"
-#include "blacklist.h"
 #include "s_assert.h"
 
-static int mr_user(struct MsgBuf *, struct Client *, struct Client *, int, const char **);
 static const char user_desc[] =
-       "Provides the USER command to register a new connection":
+       "Provides the USER command to register a new connection";
+
+static void mr_user(struct MsgBuf *, struct Client *, struct Client *, int, const char **);
 
 struct Message user_msgtab = {
        "USER", 0, 0, 0, 0,
@@ -48,8 +48,8 @@ struct Message user_msgtab = {
 mapi_clist_av1 user_clist[] = { &user_msgtab, NULL };
 DECLARE_MODULE_AV2(user, NULL, NULL, user_clist, NULL, NULL, NULL, NULL, user_desc);
 
-static int do_local_user(struct Client *client_p, struct Client *source_p,
-                        const char *username, const char *realname);
+static void do_local_user(struct Client *client_p, struct Client *source_p,
+               const char *username, const char *realname);
 
 /* mr_user()
  *      parv[1] = username (login name, account)
@@ -57,20 +57,20 @@ static int do_local_user(struct Client *client_p, struct Client *source_p,
  *      parv[3] = server host name (ignored)
  *      parv[4] = users gecos
  */
-static int
+static void
 mr_user(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
 {
        static char buf[BUFSIZE];
        char *p;
 
-       if (strlen(client_p->id) == 3)
+       if (strlen(client_p->id) == 3 || (source_p->preClient && !EmptyString(source_p->preClient->id)))
        {
                exit_client(client_p, client_p, client_p, "Mixing client and server protocol");
-               return 0;
+               return;
        }
 
        if(source_p->flags & FLAGS_SENTUSER)
-               return 0;
+               return;
 
        if((p = strchr(parv[1], '@')))
                *p = '\0';
@@ -80,10 +80,9 @@ mr_user(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_
        source_p->localClient->fullcaps = rb_strdup(buf);
 
        do_local_user(client_p, source_p, parv[1], parv[4]);
-       return 0;
 }
 
-static int
+static void
 do_local_user(struct Client *client_p, struct Client *source_p,
              const char *username, const char *realname)
 {
@@ -92,7 +91,6 @@ do_local_user(struct Client *client_p, struct Client *source_p,
 
        make_user(source_p);
 
-       lookup_blacklists(source_p);
        source_p->flags |= FLAGS_SENTUSER;
 
        rb_strlcpy(source_p->info, realname, sizeof(source_p->info));
@@ -103,8 +101,6 @@ do_local_user(struct Client *client_p, struct Client *source_p,
        if(source_p->name[0])
        {
                /* NICK already received, now I have USER... */
-               return register_local_user(client_p, source_p);
+               register_local_user(client_p, source_p);
        }
-
-       return 0;
 }