X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fngircd%2Firc.c;h=3b098d0aa1095ecbe99c41fafb128c991468f269;hb=HEAD;hp=dc3b2f2ecf120a4147074cae869f5406d6c9fb98;hpb=d9f81ac66942000861d46cd33708585a729b1207;p=ngircd-alex.git diff --git a/src/ngircd/irc.c b/src/ngircd/irc.c index dc3b2f2e..3b098d0a 100644 --- a/src/ngircd/irc.c +++ b/src/ngircd/irc.c @@ -1,6 +1,6 @@ /* * ngIRCd -- The Next Generation IRC Daemon - * Copyright (c)2001-2015 Alexander Barton (alex@barton.de) and Contributors. + * Copyright (c)2001-2018 Alexander Barton (alex@barton.de) and Contributors. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -112,7 +112,7 @@ IRC_ERROR(CLIENT *Client, REQUEST *Req) } if (Client_Conn(Client) != NONE) { - Client_Destroy(Client, NULL, msg, false); + Conn_Close(Client_Conn(Client), NULL, msg, false); return DISCONNECTED; } @@ -131,7 +131,7 @@ IRC_ERROR(CLIENT *Client, REQUEST *Req) * in this case, and the prefix in Req is NULL. * * @param Client The client from which this command has been received or - * Client_ThisServer() when generated interanlly. + * Client_ThisServer() when generated internally. * @param Req Request structure with prefix and all parameters. * @return CONNECTED or DISCONNECTED. */ @@ -358,7 +358,7 @@ IRC_KillClient(CLIENT *Client, CLIENT *From, const char *Nick, const char *Reaso /* Do we know such a client in the network? */ c = Client_Search(Nick); if (!c) { - LogDebug("Client with nick \"%s\" is unknown, not forwaring.", Nick); + LogDebug("Client with nick \"%s\" is unknown, not forwarding.", Nick); return CONNECTED; } @@ -415,7 +415,7 @@ IRC_KillClient(CLIENT *Client, CLIENT *From, const char *Nick, const char *Reaso * Send help for a given topic to the client. * * @param Client The client requesting help. - * @param Topoc The help topic requested. + * @param Topic The help topic requested. * @return CONNECTED or DISCONNECTED. */ static bool @@ -514,7 +514,7 @@ Option_String(UNUSED CONN_ID Idx) /** * Send a message to target(s). * - * This function is used by IRC_{PRIVMSG|NOTICE|SQUERY} to actualy + * This function is used by IRC_{PRIVMSG|NOTICE|SQUERY} to actually * send the message(s). * * @param Client The client from which this command has been received. @@ -572,6 +572,13 @@ Send_Message(CLIENT * Client, REQUEST * Req, int ForceType, bool SendErrors) #endif message = Req->argv[1]; + if (message[0] == '\0') { + if (!SendErrors) + return CONNECTED; + return IRC_WriteErrClient(Client, ERR_NOTEXTTOSEND_MSG, + Client_ID(Client)); + } + /* handle msgtarget = msgto *("," msgto) */ currentTarget = strtok_r(currentTarget, ",", &strtok_last); ngt_UpperStr(Req->command); @@ -694,7 +701,10 @@ Send_Message(CLIENT * Client, REQUEST * Req, int ForceType, bool SendErrors) goto send_next_target; } - if (Client_HasMode(cl, 'C')) { + if (Client_HasMode(cl, 'C') && + !Client_HasMode(from, 'o') && + !(Client_Type(from) == CLIENT_SERVER) && + !(Client_Type(from) == CLIENT_SERVICE)) { cl2chan = Channel_FirstChannelOf(cl); while (cl2chan) { chan = Channel_GetChannel(cl2chan);