From 20c9c94a61e003b541ce6833f1aa5e09d1d5d94c Mon Sep 17 00:00:00 2001 From: TingPing Date: Sun, 20 Oct 2013 01:33:57 -0400 Subject: [PATCH] Ignore nick prefix when splitting NAMES reply --- src/common/inbound.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/common/inbound.c b/src/common/inbound.c index 9278a05d..912fbbd5 100644 --- a/src/common/inbound.c +++ b/src/common/inbound.c @@ -668,7 +668,7 @@ inbound_nameslist (server *serv, char *chan, char *names, { session *sess; char **name_list; - char *host; + char *host, *nopre_name; char name[NICKLEN]; int i, offset; @@ -700,8 +700,17 @@ inbound_nameslist (server *serv, char *chan, char *names, if (serv->have_uhnames) { - /* Server may have userhost-in-names cap */ - offset = strcspn (name_list[i], "!"); + offset = 0; + nopre_name = name_list[i]; + + /* Ignore prefixes so '!' won't cause issues */ + while (strchr (serv->nick_prefixes, *nopre_name) != NULL) + { + *nopre_name++; + offset++; + } + + offset += strcspn (nopre_name, "!"); if (offset++ < strlen (name_list[i])) host = name_list[i] + offset; }