From: Michael Poole Date: Tue, 13 Jan 2009 02:43:56 +0000 (+0000) Subject: Author: Michael Poole X-Git-Url: http://git.pk910.de/?p=ircu2.10.12-pk.git;a=commitdiff_plain;h=5048addab78984a415422f8d1ebfd82942145964 Author: Michael Poole Description: Fix SourceForge bug 2039740 (even local /gline additions count users on remote servers towards the limit needed to force the G-line). git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/branches/u2_10_12_branch@1901 c9e4aea6-c8fd-4c43-8297-357d70d61c8c --- diff --git a/ChangeLog b/ChangeLog index 86a672d..15ba3b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-01-12 Michael Poole + + * ircd/gline.c (count_users): Accept "flags" mask to limit count + to local users. + (gline_add): Pass the flags to count_users(). + 2009-01-12 Michael Poole * include/gline.h (gline_forward_deactivation): Declare. 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); }