commit - 02a572d829e372eb32b3d4187b43e1dc9a553283
commit + acf8409c60ccc96beed0a1f990c4f9374823c0ce
blob - 89a070429afef1b8645e30c64820db12ad26f8f3
blob + adcbbfc5bbdd91f59bc403301539b1e708de5933
--- src/ngircd/irc-mode.c
+++ src/ngircd/irc-mode.c
{
CLIENT *cl, *origin;
CHANNEL *chan;
+ bool is_valid_nick, is_valid_chan;
assert(Client != NULL);
assert(Req != NULL);
Client = Client_Search(Req->prefix);
/* Channel or user mode? */
+ is_valid_nick = Client_IsValidNick(Req->argv[0]);
+ is_valid_chan = Channel_IsValidName(Req->argv[0]);
cl = NULL; chan = NULL;
- if (Client_IsValidNick(Req->argv[0]))
+ if (is_valid_nick)
cl = Client_Search(Req->argv[0]);
- if (Channel_IsValidName(Req->argv[0]))
+ if (is_valid_chan)
chan = Channel_Search(Req->argv[0]);
if (cl)
return Channel_Mode(Client, Req, origin, chan);
/* No target found! */
- return IRC_WriteErrClient(Client, ERR_NOSUCHNICK_MSG,
- Client_ID(Client), Req->argv[0]);
+ if (is_valid_nick)
+ return IRC_WriteErrClient(Client, ERR_NOSUCHNICK_MSG,
+ Client_ID(Client), Req->argv[0]);
+ else
+ return IRC_WriteErrClient(Client, ERR_NOSUCHCHANNEL_MSG,
+ Client_ID(Client), Req->argv[0]);
} /* IRC_MODE */
/**