commit 7c7d03b7309062995583595cfbdbd0f356d7a23b from: Alexander Barton date: Mon Jan 04 19:45:49 2016 UTC Enahnce comments for Send_Message() and Send_Message_Mask() No functional changes. commit - 4693226d6983b5ed4bd74b32a8daa9a3124ed17c commit + 7c7d03b7309062995583595cfbdbd0f356d7a23b blob - e990cfd7a0397d2f6e42c9e42dc7d4d10db2a8af blob + ef0e95ce11284feb08ac4754637ee68ba6daf991 --- src/ngircd/irc.c +++ src/ngircd/irc.c @@ -498,6 +498,18 @@ Option_String(UNUSED CONN_ID Idx) return option_txt; } /* Option_String */ +/** + * Send a message to target(s). + * + * This function is used by IRC_{PRIVMSG|NOTICE|SQUERY} to actualy + * send the message(s). + * + * @param Client The client from which this command has been received. + * @param Req Request structure with prefix and all parameters. + * @param ForceType Required type of the destination of the message(s). + * @param SendErrors Whether to report errors back to the client or not. + * @return CONNECTED or DISCONNECTED. + */ static bool Send_Message(CLIENT * Client, REQUEST * Req, int ForceType, bool SendErrors) { @@ -693,14 +705,14 @@ Send_Message(CLIENT * Client, REQUEST * Req, int Force return DISCONNECTED; } else if (ForceType != CLIENT_SERVICE && (chan = Channel_Search(currentTarget))) { + /* Target is a channel */ if (!Channel_Write(chan, from, Client, Req->command, SendErrors, message)) return DISCONNECTED; } else if (ForceType != CLIENT_SERVICE - /* $#: server/target mask, RFC 2812, sec. 3.3.1 */ && strchr("$#", currentTarget[0]) && strchr(currentTarget, '.')) { - /* targetmask */ + /* $#: server/host mask, RFC 2812, sec. 3.3.1 */ if (!Send_Message_Mask(from, Req->command, currentTarget, message, SendErrors)) return DISCONNECTED; @@ -721,6 +733,18 @@ Send_Message(CLIENT * Client, REQUEST * Req, int Force return CONNECTED; } /* Send_Message */ +/** + * Send a message to "target mask" target(s). + * + * See RFC 2812, sec. 3.3.1 for details. + * + * @param from The client from which this command has been received. + * @param command The command to use (PRIVMSG, NOTICE, ...). + * @param targetMask The "target mask" (will be verified by this function). + * @param message The message to send. + * @param SendErrors Whether to report errors back to the client or not. + * @return CONNECTED or DISCONNECTED. + */ static bool Send_Message_Mask(CLIENT * from, char * command, char * targetMask, char * message, bool SendErrors) @@ -750,8 +774,8 @@ Send_Message_Mask(CLIENT * from, char * command, char return IRC_WriteErrClient(from, ERR_WILDTOPLEVEL, targetMask); } - /* #: hostmask, see RFC 2812, sec. 3.3.1 */ if (targetMask[0] == '#') { + /* #: hostmask, see RFC 2812, sec. 3.3.1 */ for (cl = Client_First(); cl != NULL; cl = Client_Next(cl)) { if (Client_Type(cl) != CLIENT_USER) continue; @@ -762,7 +786,8 @@ Send_Message_Mask(CLIENT * from, char * command, char return false; } } else { - assert(targetMask[0] == '$'); /* $: server mask, see RFC 2812, sec. 3.3.1 */ + /* $: server mask, see RFC 2812, sec. 3.3.1 */ + assert(targetMask[0] == '$'); for (cl = Client_First(); cl != NULL; cl = Client_Next(cl)) { if (Client_Type(cl) != CLIENT_USER) continue;