X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Fngircd%2Firc.c;h=ad8c0506905eca3fdaf5787914be740b7a4b9e21;hp=74b8a018cf1a5d8dc3da0541964748f186928562;hb=52ccba5d1e8cd2e648cf3c14598332bde6b9910d;hpb=b5faf3055b61afaef73ac49a448cac1a5b063127 diff --git a/src/ngircd/irc.c b/src/ngircd/irc.c index 74b8a018..ad8c0506 100644 --- a/src/ngircd/irc.c +++ b/src/ngircd/irc.c @@ -1,6 +1,6 @@ /* * ngIRCd -- The Next Generation IRC Daemon - * Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors. + * Copyright (c)2001-2015 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 @@ -16,17 +16,19 @@ * IRC commands */ -#include "imp.h" #include #include #include +#include +#include #include "ngircd.h" #include "conn-func.h" #include "conf.h" #include "channel.h" -#include "conn-encoding.h" -#include "defines.h" +#ifdef ICONV +# include "conn-encoding.h" +#endif #include "irc-macros.h" #include "irc-write.h" #include "log.h" @@ -34,9 +36,7 @@ #include "messages.h" #include "parse.h" #include "op.h" -#include "tool.h" -#include "exp.h" #include "irc.h" static char *Option_String PARAMS((CONN_ID Idx)); @@ -224,8 +224,6 @@ IRC_TRACE(CLIENT *Client, REQUEST *Req) assert(Client != NULL); assert(Req != NULL); - IRC_SetPenalty(Client, 3); - _IRC_GET_SENDER_OR_RETURN_(from, Req, Client) _IRC_GET_TARGET_SERVER_OR_RETURN_(target, Req, 0, from) @@ -242,7 +240,7 @@ IRC_TRACE(CLIENT *Client, REQUEST *Req) PACKAGE_VERSION, Client_ID(target), Client_ID(Client_NextHop(target)), Option_String(idx2), - time(NULL) - Conn_StartTime(idx2), + (long)(time(NULL) - Conn_StartTime(idx2)), Conn_SendQ(idx), Conn_SendQ(idx2))) return DISCONNECTED; @@ -301,8 +299,6 @@ IRC_HELP(CLIENT *Client, REQUEST *Req) assert(Client != NULL); assert(Req != NULL); - IRC_SetPenalty(Client, 2); - if ((Req->argc == 0 && array_bytes(&Conf_Helptext) > 0) || (Req->argc >= 1 && strcasecmp(Req->argv[0], "Commands") != 0)) { /* Help text available and requested */ @@ -343,21 +339,24 @@ GLOBAL bool IRC_KillClient(CLIENT *Client, CLIENT *From, const char *Nick, const char *Reason) { const char *msg; - CONN_ID my_conn, conn; + CONN_ID my_conn = NONE, conn; CLIENT *c; - /* Inform other servers */ - IRC_WriteStrServersPrefix(From ? Client : NULL, - From ? From : Client_ThisServer(), - "KILL %s :%s", Nick, Reason); + assert(Nick != NULL); + assert(Reason != NULL); - /* Do we know such a client? */ + /* Do we know such a client in the network? */ c = Client_Search(Nick); if (!c) { - LogDebug("Client with nick \"%s\" is unknown here.", Nick); + LogDebug("Client with nick \"%s\" is unknown, not forwaring.", Nick); return CONNECTED; } + /* Inform other servers */ + IRC_WriteStrServersPrefix(From ? Client : NULL, + From ? From : Client_ThisServer(), + "KILL %s :%s", Nick, Reason); + if (Client_Type(c) != CLIENT_USER && Client_Type(c) != CLIENT_GOTNICK) { /* Target of this KILL is not a regular user, this is * invalid! So we ignore this case if we received a @@ -380,7 +379,8 @@ IRC_KillClient(CLIENT *Client, CLIENT *From, const char *Nick, const char *Reaso } /* Save ID of this connection */ - my_conn = Client_Conn(Client); + if (Client) + my_conn = Client_Conn(Client); /* Kill the client NOW: * - Close the local connection (if there is one), @@ -478,9 +478,7 @@ Option_String(UNUSED CONN_ID Idx) #endif { static char option_txt[8]; -#ifdef ZLIB UINT16 options; -#endif assert(Idx != NONE); @@ -528,12 +526,11 @@ Send_Message(CLIENT * Client, REQUEST * Req, int ForceType, bool SendErrors) if (Req->argc > 2) { if (!SendErrors) return CONNECTED; - IRC_SetPenalty(Client, 2); return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG, Client_ID(Client), Req->command); } - if (Client_Type(Client) == CLIENT_SERVER) + if (Client_Type(Client) == CLIENT_SERVER && Req->prefix) from = Client_Search(Req->prefix); else from = Client;