X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fcmd_user.cpp;h=dc224db76d88ba2e94fab58a540c804ddd7e78a0;hb=0306a4231e85baeb5029ef2b9b36d0b5d241d147;hp=b889455fde541f46cabc76fe164a235ecc0ae057;hpb=1552f3918ac0dad7fef9b86b70c0f4a63d4e37a7;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/cmd_user.cpp b/src/cmd_user.cpp index b889455fd..dc224db76 100644 --- a/src/cmd_user.cpp +++ b/src/cmd_user.cpp @@ -11,35 +11,39 @@ * --------------------------------------------------- */ +#include "inspircd.h" #include "configreader.h" #include "users.h" #include "commands/cmd_user.h" - - -extern "C" command_t* init_command(InspIRCd* Instance) +extern "C" DllExport command_t* init_command(InspIRCd* Instance) { return new cmd_user(Instance); } CmdResult cmd_user::Handle (const char** parameters, int pcnt, userrec *user) { - if (user->registered < REG_NICKUSER) + /* A user may only send the USER command once */ + if (!(user->registered & REG_USER)) { - if (!ServerInstance->IsIdent(parameters[0])) { - // This kinda Sucks, According to the RFC thou, its either this, - // or "You have already registered" :p -- Craig - user->WriteServ("461 %s USER :Not enough parameters",user->nick); + if (!ServerInstance->IsIdent(parameters[0])) + { + /* + * RFC says we must use this numeric, so we do. Let's make it a little more nub friendly though. :) + * -- Craig, and then w00t. + */ + user->WriteServ("461 %s USER :Your username is not valid",user->nick); return CMD_FAILURE; } - else { + else + { /* We're not checking ident, but I'm not sure I like the idea of '~' prefixing.. */ /* XXX - The ident field is IDENTMAX+2 in size to account for +1 for the optional * ~ character, and +1 for null termination, therefore we can safely use up to * IDENTMAX here. */ strlcpy(user->ident, parameters[0], IDENTMAX); - strlcpy(user->fullname,parameters[3],MAXGECOS); + strlcpy(user->fullname, *parameters[3] ? parameters[3] : "No info", MAXGECOS); user->registered = (user->registered | REG_USER); } }