From 64f91df8fb4a5be8ba4d7f4db13b66a59ce35db6 Mon Sep 17 00:00:00 2001 From: Moritz Wilhelmy Date: Thu, 10 Oct 2024 14:34:06 +0200 Subject: [PATCH] Add server_redirect for names Then, use this redirect to make irssi not print NAMES commands sent by proxy clients. Closes https://github.com/irssi/irssi/issues/1537 --- src/irc/core/servers-redirect.c | 8 ++++++++ src/irc/proxy/listen.c | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/irc/core/servers-redirect.c b/src/irc/core/servers-redirect.c index 50560883..4c59e3b8 100644 --- a/src/irc/core/servers-redirect.c +++ b/src/irc/core/servers-redirect.c @@ -706,6 +706,14 @@ void servers_redirect_init(void) NULL, /* */ NULL); + /* NAMES */ + server_redirect_register("names", TRUE, 0, + "event 353", -1, /* An element of NAMES */ + NULL, + "event 366", 1, /* End of NAMES */ + NULL, + NULL); + /* LIST */ server_redirect_register("list", FALSE, 0, "event 321", 1, /* Begins the LIST */ diff --git a/src/irc/proxy/listen.c b/src/irc/proxy/listen.c index 19aba87d..a6b3a308 100644 --- a/src/irc/proxy/listen.c +++ b/src/irc/proxy/listen.c @@ -304,14 +304,14 @@ static void handle_client_cmd(CLIENT_REC *client, char *cmd, char *args, grab_who(client, args); else if (g_strcmp0(cmd, "WHOWAS") == 0) proxy_redirect_event(client, "whowas", 1, args, -1); - else if (g_strcmp0(cmd, "WHOIS") == 0) { + else if (g_strcmp0(cmd, "WHOIS") == 0 || g_strcmp0(cmd, "NAMES") == 0) { char *p; /* convert dots to spaces */ for (p = args; *p != '\0'; p++) if (*p == ',') *p = ' '; - proxy_redirect_event(client, "whois", 1, args, TRUE); + proxy_redirect_event(client, *cmd == 'N' ? "names" : "whois", 1, args, TRUE); } else if (g_strcmp0(cmd, "ISON") == 0) proxy_redirect_event(client, "ison", 1, args, -1); else if (g_strcmp0(cmd, "USERHOST") == 0)