X-Git-Url: http://git.pk910.de/?p=ircu2.10.12-pk.git;a=blobdiff_plain;f=ircd%2Fgline.c;h=adb745cad8e280ffe90193967e284e7b9480160f;hp=487dde94962d28779587bb39f5f7db5d69f4ff8d;hb=5048addab78984a415422f8d1ebfd82942145964;hpb=2575d32764863d3d571794f433e407d21a06032a diff --git a/ircd/gline.c b/ircd/gline.c index 487dde9..adb745c 100644 --- a/ircd/gline.c +++ b/ircd/gline.c @@ -349,10 +349,11 @@ gline_propagate(struct Client *cptr, struct Client *sptr, struct Gline *gline) /** Count number of users who match \a mask. * @param[in] mask user\@host or user\@ip mask to check. + * @param[in] flags Bitmask possibly containing the value GLINE_LOCAL, to limit searches to this server. * @return Count of matching users. */ static int -count_users(char *mask) +count_users(char *mask, int flags) { struct irc_in_addr ipmask; struct Client *acptr; @@ -366,6 +367,8 @@ count_users(char *mask) for (acptr = GlobalClientList; acptr; acptr = cli_next(acptr)) { if (!IsUser(acptr)) continue; + if ((flags & GLINE_LOCAL) && !MyConnect(acptr)) + continue; ircd_snprintf(0, namebuf, sizeof(namebuf), "%s@%s", cli_user(acptr)->username, cli_user(acptr)->host); @@ -485,7 +488,7 @@ gline_add(struct Client *cptr, struct Client *sptr, char *userhost, break; } - if ((tmp = count_users(uhmask)) >= + if ((tmp = count_users(uhmask, flags)) >= feature_int(FEAT_GLINEMAXUSERCOUNT) && !(flags & GLINE_OPERFORCE)) return send_reply(sptr, ERR_TOOMANYUSERS, tmp); }