*/
int
-hide_hostmask(struct Client *cptr, unsigned int flag) {
- return hide_ident_hostmask(cptr, flag, NULL);
-}
-
-int
-hide_ident_hostmask(struct Client *cptr, unsigned int flag, char *username)
+hide_hostmask(struct Client *cptr, unsigned int flag)
{
struct Membership *chan;
char buf[HOSTLEN];
break;
case FLAG_ACCOUNT:
case FLAG_FAKEHOST:
+ case FLAG_FAKEIDENT:
/* Invalidate all bans against the user so we check them again */
for (chan = (cli_user(cptr))->channel; chan;
chan = chan->next_channel)
if(IsFakeHost(cptr)) ircd_strncpy(buf, cli_user(cptr)->fakehost, HOSTLEN);
else if (IsAccount(cptr)) ircd_snprintf(0, buf, HOSTLEN, "%s.%s", cli_user(cptr)->account, feature_str(FEAT_HIDDEN_HOST));
else return 0;
- if(strncmp(buf, cli_user(cptr)->host, HOSTLEN) == 0) return 0;
+ if(strncmp(buf, cli_user(cptr)->host, HOSTLEN) == 0 && (!IsFakeIdent(cptr) || strncmp(cli_user(cptr)->fakeuser, cli_user(cptr)->username, USERLEN) == 0)) return 0;
/* Remove all "valid" marks on the bans. This forces them to be
* rechecked if the ban is accessed again.
ircd_strncpy(cli_user(cptr)->host, buf, HOSTLEN);
/* spoof also the username if username is passed */
- if(username) {
- ircd_strncpy(cli_user(cptr)->username, username, USERLEN);
+ if(IsFakeIdent(cptr)) {
+ ircd_strncpy(cli_user(cptr)->username, cli_user(cptr)->fakeuser, USERLEN);
/* ok, the client is now fully hidden, so let them know -- hikari */
if (MyConnect(cptr))
send_reply(cptr, RPL_HOSTUSERHIDDEN, cli_user(cptr)->username, cli_user(cptr)->host);