{
chptr = chan->channel;
- if (!ShowChannel(sptr, chptr))
+ if (!ShowChannel(sptr, chptr)
+ && !(IsOper(sptr) && IsLocalChannel(chptr->chname)))
continue;
if (acptr != sptr && IsZombie(chan))
}
if (IsDeaf(acptr))
*(buf + len++) = '-';
+ if (IsOper(sptr) && !ShowChannel(sptr, chptr))
+ *(buf + len++) = '*';
if (IsDelayedJoin(chan) && (sptr != acptr))
*(buf + len++) = '<';
else if (IsChanOp(chan))
if (HasHiddenHost(acptr) && (IsAnOper(sptr) || acptr == sptr))
send_reply(sptr, RPL_WHOISACTUALLY, name, user->username,
- user->realhost, ircd_ntoa((const char*) &(cli_ip(acptr))));
-
+ user->realhost, ircd_ntoa(&cli_ip(acptr)));
+
/* Hint: if your looking to add more flags to a user, eg +h, here's
* probably a good place to add them :)
*/
-
+
if (MyConnect(acptr) && (!feature_bool(FEAT_HIS_WHOIS_IDLETIME) ||
(sptr == acptr || IsAnOper(sptr) || parc >= 3)))
- send_reply(sptr, RPL_WHOISIDLE, name, CurrentTime - user->last,
+ send_reply(sptr, RPL_WHOISIDLE, name, CurrentTime - user->last,
cli_firsttime(acptr));
}
}
char* p = 0;
int found = 0;
int total = 0;
+ int wildscount = 0;
if (parc < 2)
{
}
}
else /* wilds */
- found=do_wilds(sptr, nick, total, parc);
+ {
+ if (++wildscount > 3) {
+ send_reply(sptr, ERR_QUERYTOOLONG, parv[1]);
+ break;
+ }
+ found=do_wilds(sptr, nick, total, parc);
+ }
if (!found)
send_reply(sptr, ERR_NOSUCHNICK, nick);