{
struct Gline *gline;
+ assert(0 != expire);
+
gline = (struct Gline *)MyMalloc(sizeof(struct Gline)); /* alloc memory */
assert(0 != gline);
}
user = userhost;
host = NULL;
- tmp = count_realnames(userhost + 2);
- if ((tmp >= feature_int(FEAT_GLINEMAXUSERCOUNT))
- && !(flags & GLINE_OPERFORCE))
- return send_reply(sptr, ERR_TOOMANYUSERS, tmp);
+ if (MyUser(sptr) || (IsUser(sptr) && flags & GLINE_LOCAL)) {
+ tmp = count_realnames(userhost + 2);
+ if ((tmp >= feature_int(FEAT_GLINEMAXUSERCOUNT))
+ && !(flags & GLINE_OPERFORCE))
+ return send_reply(sptr, ERR_TOOMANYUSERS, tmp);
+ }
} else {
canon_userhost(userhost, &user, &host, "*");
if (sizeof(uhmask) <