assert(Client != NULL);
assert(Req != NULL);
- _IRC_ARGC_GE_OR_RETURN_(Client, Req, 1)
_IRC_GET_SENDER_OR_RETURN_(origin, Req, Client)
/* Channel or user mode? */
return Channel_Mode(Client, Req, origin, chan);
/* No target found! */
- return IRC_WriteStrClient(Client, ERR_NOSUCHNICK_MSG,
+ return IRC_WriteErrClient(Client, ERR_NOSUCHNICK_MSG,
Client_ID(Client), Req->argv[0]);
} /* IRC_MODE */
if (Client_Type(Client) == CLIENT_USER) {
/* Users are only allowed to manipulate their own modes! */
if (Target != Client)
- return IRC_WriteStrClient(Client,
+ return IRC_WriteErrClient(Client,
ERR_USERSDONTMATCH_MSG,
Client_ID(Client));
}
set = false;
strcpy(the_modes, "-");
} else
- return IRC_WriteStrClient(Origin, ERR_UMODEUNKNOWNFLAG_MSG,
+ return IRC_WriteErrClient(Origin, ERR_UMODEUNKNOWNFLAG_MSG,
Client_ID(Origin));
x[1] = '\0';
x[0] = 'a';
Client_SetAway(Origin, DEFAULT_AWAY_MSG);
} else
- ok = IRC_WriteStrClient(Origin,
+ ok = IRC_WriteErrClient(Origin,
ERR_NOPRIVILEGES_MSG,
Client_ID(Origin));
break;
case 'B': /* Bot */
if (Client_HasMode(Client, 'r'))
- ok = IRC_WriteStrClient(Origin,
+ ok = IRC_WriteErrClient(Origin,
ERR_RESTRICTED_MSG,
Client_ID(Origin));
else
|| Client_OperByMe(Origin))
x[0] = 'c';
else
- ok = IRC_WriteStrClient(Origin,
+ ok = IRC_WriteErrClient(Origin,
ERR_NOPRIVILEGES_MSG,
Client_ID(Origin));
break;
Client_SetOperByMe(Target, false);
x[0] = 'o';
} else
- ok = IRC_WriteStrClient(Origin,
+ ok = IRC_WriteErrClient(Origin,
ERR_NOPRIVILEGES_MSG,
Client_ID(Origin));
break;
|| Client_OperByMe(Origin))
x[0] = 'q';
else
- ok = IRC_WriteStrClient(Origin,
+ ok = IRC_WriteErrClient(Origin,
ERR_NOPRIVILEGES_MSG,
Client_ID(Origin));
break;
if (set || Client_Type(Client) == CLIENT_SERVER)
x[0] = 'r';
else
- ok = IRC_WriteStrClient(Origin,
+ ok = IRC_WriteErrClient(Origin,
ERR_RESTRICTED_MSG,
Client_ID(Origin));
break;
if (Client_Type(Client) == CLIENT_SERVER)
x[0] = 'R';
else
- ok = IRC_WriteStrClient(Origin,
+ ok = IRC_WriteErrClient(Origin,
ERR_NICKREGISTER_MSG,
Client_ID(Origin));
break;
case 'x': /* Cloak hostname */
if (Client_HasMode(Client, 'r'))
- ok = IRC_WriteStrClient(Origin,
+ ok = IRC_WriteErrClient(Origin,
ERR_RESTRICTED_MSG,
Client_ID(Origin));
else if (!set || Conf_CloakHostModeX[0]
x[0] = 'x';
send_RPL_HOSTHIDDEN_MSG = true;
} else
- ok = IRC_WriteStrClient(Origin,
+ ok = IRC_WriteErrClient(Origin,
ERR_NOPRIVILEGES_MSG,
Client_ID(Origin));
break;
"Unknown mode \"%c%c\" from \"%s\"!?",
set ? '+' : '-', *mode_ptr,
Client_ID(Origin));
- ok = IRC_WriteStrClient(Origin,
+ ok = IRC_WriteErrClient(Origin,
ERR_UMODEUNKNOWNFLAG2_MSG,
Client_ID(Origin),
set ? '+' : '-',
is_halfop = is_op = is_admin = is_owner = is_machine = is_oper = false;
if (Channel_IsModeless(Channel))
- return IRC_WriteStrClient(Client, ERR_NOCHANMODES_MSG,
+ return IRC_WriteErrClient(Client, ERR_NOCHANMODES_MSG,
Client_ID(Client), Channel_Name(Channel));
/* Mode request: let's answer it :-) */
/* Check if client is member of channel or an oper or an server/service */
if(!Channel_IsMemberOf(Channel, Client) && !is_oper && !is_machine)
- return IRC_WriteStrClient(Origin, ERR_NOTONCHANNEL_MSG,
+ return IRC_WriteErrClient(Origin, ERR_NOTONCHANNEL_MSG,
Client_ID(Origin),
Channel_Name(Channel));
case 'z': /* Secure connections only */
if(!is_oper && !is_machine && !is_owner &&
!is_admin && !is_op) {
- connected = IRC_WriteStrClient(Origin,
+ connected = IRC_WriteErrClient(Origin,
ERR_CHANOPRIVSNEEDED_MSG,
Client_ID(Origin), Channel_Name(Channel));
goto chan_exit;
is_admin || is_op || is_halfop)
x[0] = *mode_ptr;
else
- connected = IRC_WriteStrClient(Origin,
+ connected = IRC_WriteErrClient(Origin,
ERR_CHANOPRIVSNEEDED_MSG,
Client_ID(Origin), Channel_Name(Channel));
break;
is_admin || is_op || is_halfop)
x[0] = *mode_ptr;
else
- connected = IRC_WriteStrClient(Origin,
+ connected = IRC_WriteErrClient(Origin,
ERR_CHANOPRIVSNEEDED_MSG,
Client_ID(Origin),
Channel_Name(Channel));
sizeof(argadd));
x[0] = *mode_ptr;
} else {
- connected = IRC_WriteStrClient(Origin,
+ connected = IRC_WriteErrClient(Origin,
ERR_CHANOPRIVSNEEDED_MSG,
Client_ID(Origin),
Channel_Name(Channel));
#ifdef STRICT_RFC
/* Only send error message in "strict" mode,
* this is how ircd2.11 and others behave ... */
- connected = IRC_WriteStrClient(Origin,
+ IRC_SetPenalty(Origin, 2);
+ connected = IRC_WriteErrClient(Origin,
ERR_NEEDMOREPARAMS_MSG,
Client_ID(Origin), Req->command);
#endif
is_admin || is_op || is_halfop)
x[0] = *mode_ptr;
else
- connected = IRC_WriteStrClient(Origin,
+ connected = IRC_WriteErrClient(Origin,
ERR_CHANOPRIVSNEEDED_MSG,
Client_ID(Origin),
Channel_Name(Channel));
x[0] = *mode_ptr;
}
} else {
- connected = IRC_WriteStrClient(Origin,
+ connected = IRC_WriteErrClient(Origin,
ERR_CHANOPRIVSNEEDED_MSG,
Client_ID(Origin),
Channel_Name(Channel));
#ifdef STRICT_RFC
/* Only send error message in "strict" mode,
* this is how ircd2.11 and others behave ... */
- connected = IRC_WriteStrClient(Origin,
+ IRC_SetPenalty(Origin, 2);
+ connected = IRC_WriteErrClient(Origin,
ERR_NEEDMOREPARAMS_MSG,
Client_ID(Origin), Req->command);
#endif
if(is_oper || is_machine)
x[0] = 'O';
else
- connected = IRC_WriteStrClient(Origin,
+ connected = IRC_WriteErrClient(Origin,
ERR_NOPRIVILEGES_MSG,
Client_ID(Origin));
} else if(is_oper || is_machine || is_owner ||
is_admin || is_op)
x[0] = 'O';
else
- connected = IRC_WriteStrClient(Origin,
+ connected = IRC_WriteErrClient(Origin,
ERR_CHANOPRIVSNEEDED_MSG,
Client_ID(Origin),
Channel_Name(Channel));
if(is_oper || is_machine)
x[0] = 'P';
else
- connected = IRC_WriteStrClient(Origin,
+ connected = IRC_WriteErrClient(Origin,
ERR_NOPRIVILEGES_MSG,
Client_ID(Origin));
} else if(is_oper || is_machine || is_owner ||
is_admin || is_op)
x[0] = 'P';
else
- connected = IRC_WriteStrClient(Origin,
+ connected = IRC_WriteErrClient(Origin,
ERR_CHANOPRIVSNEEDED_MSG,
Client_ID(Origin),
Channel_Name(Channel));
case 'q': /* Owner */
case 'a': /* Channel admin */
if(!is_oper && !is_machine && !is_owner && !is_admin) {
- connected = IRC_WriteStrClient(Origin,
+ connected = IRC_WriteErrClient(Origin,
ERR_CHANOPPRIVTOOLOW_MSG,
Client_ID(Origin),
Channel_Name(Channel));
case 'o': /* Channel operator */
if(!is_oper && !is_machine && !is_owner &&
!is_admin && !is_op) {
- connected = IRC_WriteStrClient(Origin,
+ connected = IRC_WriteErrClient(Origin,
ERR_CHANOPRIVSNEEDED_MSG,
Client_ID(Origin),
Channel_Name(Channel));
case 'h': /* Half Op */
if(!is_oper && !is_machine && !is_owner &&
!is_admin && !is_op) {
- connected = IRC_WriteStrClient(Origin,
+ connected = IRC_WriteErrClient(Origin,
ERR_CHANOPRIVSNEEDED_MSG,
Client_ID(Origin),
Channel_Name(Channel));
if (client)
x[0] = *mode_ptr;
else
- connected = IRC_WriteStrClient(Origin,
+ connected = IRC_WriteErrClient(Origin,
ERR_NOSUCHNICK_MSG,
Client_ID(Origin),
Req->argv[arg_arg]);
} else {
- connected = IRC_WriteStrClient(Origin,
+ connected = IRC_WriteErrClient(Origin,
ERR_CHANOPRIVSNEEDED_MSG,
Client_ID(Origin),
Channel_Name(Channel));
* mode, because most other servers don't do
* it as well and some clients send "wired"
* MODE commands like "MODE #chan -ooo nick". */
- connected = IRC_WriteStrClient(Origin,
+ IRC_SetPenalty(Origin, 2);
+ connected = IRC_WriteErrClient(Origin,
ERR_NEEDMOREPARAMS_MSG,
Client_ID(Origin), Req->command);
#endif
Client, Channel,
Req->argv[arg_arg]);
} else {
- connected = IRC_WriteStrClient(Origin,
+ connected = IRC_WriteErrClient(Origin,
ERR_CHANOPRIVSNEEDED_MSG,
Client_ID(Origin),
Channel_Name(Channel));
"Unknown mode \"%c%c\" from \"%s\" on %s!?",
set ? '+' : '-', *mode_ptr,
Client_ID(Origin), Channel_Name(Channel));
- connected = IRC_WriteStrClient(Origin,
+ connected = IRC_WriteErrClient(Origin,
ERR_UNKNOWNMODE_MSG,
Client_ID(Origin), *mode_ptr,
Channel_Name(Channel));
/* Validate target client */
if (client && (!Channel_IsMemberOf(Channel, client))) {
- if (!IRC_WriteStrClient
- (Origin, ERR_USERNOTINCHANNEL_MSG,
- Client_ID(Origin), Client_ID(client),
- Channel_Name(Channel)))
+ if (!IRC_WriteErrClient(Origin, ERR_USERNOTINCHANNEL_MSG,
+ Client_ID(Origin),
+ Client_ID(client),
+ Channel_Name(Channel)))
break;
-
continue;
}
assert (Client != NULL);
assert (Req != NULL);
- _IRC_ARGC_LE_OR_RETURN_(Client, Req, 1)
-
if (Req->argc == 1 && Req->argv[0][0]) {
Client_SetAway(Client, Req->argv[0]);
Client_ModeAdd(Client, 'a');
return CONNECTED;
if (Client_Type(Client) == CLIENT_USER &&
current_count >= MAX_HNDL_CHANNEL_LISTS)
- return IRC_WriteStrClient(Client, ERR_LISTFULL_MSG,
+ return IRC_WriteErrClient(Client, ERR_LISTFULL_MSG,
Client_ID(Client),
Channel_Name(Channel), mask,
MAX_HNDL_CHANNEL_LISTS);