diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2010-07-08 23:31:01 +0100 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2010-07-08 23:31:01 +0100 |
commit | 9a9b520df6044cfc034f9736fb97660a46e879b9 (patch) | |
tree | 16f45502a8b8d7e2c30c33b744605e70250f1c59 /irc_commands.c | |
parent | 69b896b5967e5d13b1c60c68cb3bc7d4a0d5cd06 (diff) |
Allow nick changes if they're only different in capitalisation, fixed
faulty responses in the NICK command, and fixing crash bug in nick changes
before finishing login.
Diffstat (limited to 'irc_commands.c')
-rw-r--r-- | irc_commands.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/irc_commands.c b/irc_commands.c index 197a7e6e..0573601d 100644 --- a/irc_commands.c +++ b/irc_commands.c @@ -71,16 +71,18 @@ static void irc_cmd_user( irc_t *irc, char **cmd ) static void irc_cmd_nick( irc_t *irc, char **cmd ) { - if( irc_user_by_name( irc, cmd[1] ) ) + irc_user_t *iu; + + if( ( iu = irc_user_by_name( irc, cmd[1] ) ) && iu != irc->user ) { - irc_send_num( irc, 433, ":This nick is already in use" ); + irc_send_num( irc, 433, "%s :This nick is already in use", cmd[1] ); } else if( !nick_ok( cmd[1] ) ) { /* [SH] Invalid characters. */ - irc_send_num( irc, 432, ":This nick contains invalid characters" ); + irc_send_num( irc, 432, "%s :This nick contains invalid characters", cmd[1] ); } - else if( irc->user->nick ) + else if( irc->status & USTATUS_LOGGED_IN ) { if( irc->status & USTATUS_IDENTIFIED ) { @@ -97,6 +99,7 @@ static void irc_cmd_nick( irc_t *irc, char **cmd ) } else { + g_free( irc->user->nick ); irc->user->nick = g_strdup( cmd[1] ); irc_check_login( irc ); |