From 116eac2329f1feb30bbc9be54ff45d39cae4121b Mon Sep 17 00:00:00 2001 From: "Kevin L. Mitchell" Date: Sat, 21 Jul 2001 23:05:51 +0000 Subject: [PATCH] Author: Kev Log message: If servers are disconnected through a call to exit_client()--say by a squit or something else, perhaps an access check--the server would send a raw message like "ERROR :Closing Link [...]". The server interprets "ERROR" as a numeric nick, and since in most cases, that numeric nick doesn't exist, it ignores the message. This means that servers that closed the connection frequently did so without the proper (and useful) error message. This fix simply uses sendrawto_one() only for clients, and uses sendcmdto_one() for servers, fixing the error. git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/trunk@534 c9e4aea6-c8fd-4c43-8297-357d70d61c8c --- ChangeLog | 7 +++++++ ircd/s_misc.c | 12 +++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index b458087..c4f4fa2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2001-07-21 Kevin L. Mitchell + + * ircd/s_misc.c (exit_client): servers don't understand what the + numeric nick ERROR is supposed to mean, so they ignore error + messages, resulting in not knowing why we were rejected; use + sendcmdto_one for servers and sendrawto_one for clients + 2001-07-17 Kevin L. Mitchell * ircd/m_burst.c (ms_burst): in the case of a modeless channel and diff --git a/ircd/s_misc.c b/ircd/s_misc.c index 99ed512..b4d9af7 100644 --- a/ircd/s_misc.c +++ b/ircd/s_misc.c @@ -403,9 +403,15 @@ int exit_client(struct Client *cptr, /* Connection being handled by if (IsServer(victim) || IsHandshake(victim)) sendcmdto_one(killer, CMD_SQUIT, victim, "%s 0 :%s", cli_name(&me), comment); else if (!IsConnecting(victim)) { - if (!IsDead(victim)) - sendrawto_one(victim, MSG_ERROR " :Closing Link: %s by %s (%s)", - cli_name(victim), cli_name(killer), comment); + if (!IsDead(victim)) { + if (IsServer(victim)) + sendcmdto_one(killer, CMD_ERROR, victim, + ":Closing Link: %s by %s (%s)", cli_name(victim), + cli_name(killer), comment); + else + sendrawto_one(victim, MSG_ERROR " :Closing Link: %s by %s (%s)", + cli_name(victim), cli_name(killer), comment); + } } if ((IsServer(victim) || IsHandshake(victim) || IsConnecting(victim)) && (killer == &me || (IsServer(killer) && -- 2.20.1