]> jfr.im git - solanum.git/blobdiff - modules/m_user.c
ircd/packet.c: make function definition consistent with declaration (#301)
[solanum.git] / modules / m_user.c
index 0760e7c5090d70188281e59786900ee4d52095f4..fc657c9ba62e089cf92a0c2cbf7d03926874be9a 100644 (file)
@@ -20,8 +20,6 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
  *  USA
- *
- *  $Id: m_user.c 3416 2007-04-15 20:18:54Z jilles $
  */
 
 #include "stdinc.h"
 #include "msg.h"
 #include "parse.h"
 #include "modules.h"
-#include "blacklist.h"
 #include "s_assert.h"
 
-static int mr_user(struct Client *, struct Client *, int, const char **);
+static const char user_desc[] =
+       "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, MFLG_SLOW,
+       "USER", 0, 0, 0, 0,
        {{mr_user, 5}, mg_reg, mg_ignore, mg_ignore, mg_ignore, mg_reg}
 };
 
 mapi_clist_av1 user_clist[] = { &user_msgtab, NULL };
-DECLARE_MODULE_AV1(user, NULL, NULL, user_clist, NULL, NULL, "$Revision: 3416 $");
+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
-mr_user(struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
+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 Client *client_p, struct Client *source_p, int parc, const char *
        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;
 }