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
+2001-07-21 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * 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 <klmitch@mit.edu>
* ircd/m_burst.c (ms_burst): in the case of a modeless channel and
2001-07-17 Kevin L. Mitchell <klmitch@mit.edu>
* ircd/m_burst.c (ms_burst): in the case of a modeless channel and
if (IsServer(victim) || IsHandshake(victim))
sendcmdto_one(killer, CMD_SQUIT, victim, "%s 0 :%s", cli_name(&me), comment);
else if (!IsConnecting(victim)) {
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) &&
}
if ((IsServer(victim) || IsHandshake(victim) || IsConnecting(victim)) &&
(killer == &me || (IsServer(killer) &&