ident = user->ident;
else if (options & GENMASK_ANY_IDENT)
ident = "*";
+ else if (IsFakeIdent(user) && IsHiddenHost(user) && !(options & GENMASK_NO_HIDING))
+ ident = user->fakeident;
else {
ident = alloca(strlen(user->ident)+2);
ident[0] = '*';
return 1;
}
- if (IsFakeHost(who) && IsHiddenHost(who))
+ if (IsFakeHost(who) && IsFakeIdent(who) && IsHiddenHost(who))
+ irc_numeric(from, RPL_WHOISUSER, "%s %s %s * :%s", who->nick, who->fakeident, who->fakehost, who->info);
+ else if (IsFakeIdent(who) && IsHiddenHost(who))
+ irc_numeric(from, RPL_WHOISUSER, "%s %s %s * :%s", who->nick, who->fakeident, who->hostname, who->info);
+ else if (IsFakeHost(who) && IsHiddenHost(who))
irc_numeric(from, RPL_WHOISUSER, "%s %s %s * :%s", who->nick, who->ident, who->fakehost, who->info);
else if (IsHiddenHost(who) && who->handle_info && hidden_host_suffix)
irc_numeric(from, RPL_WHOISUSER, "%s %s %s.%s * :%s", who->nick, who->ident, who->handle_info->handle, hidden_host_suffix, who->info);
return 0;
}
*marker = 0;
- if (!match_ircglob(user->ident, glob))
+ if (((IsFakeIdent(user) && IsHiddenHost(user) && (flags & MATCH_VISIBLE)) || !match_ircglob(user->ident, glob)) &&
+ !(IsFakeIdent(user) && match_ircglob(user->fakeident, glob)))
return 0;
glob = marker + 1;
/* Check for a fakehost match. */