Ignore nick prefix when splitting NAMES reply

This commit is contained in:
TingPing 2013-10-20 01:33:57 -04:00
parent ad1520b29a
commit 20c9c94a61
1 changed files with 12 additions and 3 deletions

View File

@ -668,7 +668,7 @@ inbound_nameslist (server *serv, char *chan, char *names,
{ {
session *sess; session *sess;
char **name_list; char **name_list;
char *host; char *host, *nopre_name;
char name[NICKLEN]; char name[NICKLEN];
int i, offset; int i, offset;
@ -700,8 +700,17 @@ inbound_nameslist (server *serv, char *chan, char *names,
if (serv->have_uhnames) if (serv->have_uhnames)
{ {
/* Server may have userhost-in-names cap */ offset = 0;
offset = strcspn (name_list[i], "!"); 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])) if (offset++ < strlen (name_list[i]))
host = name_list[i] + offset; host = name_list[i] + offset;
} }