X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=ircd%2Fm_gline.c;h=027d88e90e5144d370161d8e198fd069d84de489;hb=0e3c217d90ea9af230a002e06104c147c54ab01a;hp=cee85ac400df69597cf3903a97ca4589efdbc12a;hpb=f9965ec69dcade8ba683a3989b93a1d118411b87;p=ircu2.10.12-pk.git diff --git a/ircd/m_gline.c b/ircd/m_gline.c index cee85ac..027d88e 100644 --- a/ircd/m_gline.c +++ b/ircd/m_gline.c @@ -131,7 +131,7 @@ ms_gline(struct Client *cptr, struct Client *sptr, int parc, char *parv[]) if (*mask == '!') { mask++; - flags |= GLINE_OPERFORCE; + flags |= GLINE_OPERFORCE; /* assume oper had WIDE_GLINE */ } if ((parc == 3 && *mask == '-') || parc == 5) @@ -151,6 +151,9 @@ ms_gline(struct Client *cptr, struct Client *sptr, int parc, char *parv[]) else return need_more_params(sptr, "GLINE"); + if (IsServer(sptr)) + flags |= GLINE_FORCE; + if (!(target[0] == '*' && target[1] == '\0')) { if (!(acptr = FindNServer(target))) return 0; /* no such server */ @@ -296,11 +299,11 @@ mo_gline(struct Client *cptr, struct Client *sptr, int parc, char *parv[]) if (!(flags & GLINE_LOCAL) && !feature_bool(FEAT_CONFIG_OPERCMDS)) return send_reply(sptr, ERR_DISABLED, "GLINE"); - agline = gline_find(mask, GLINE_ANY | GLINE_EXACT); - if (!HasPriv(sptr, (flags & GLINE_LOCAL ? PRIV_LOCAL_GLINE : PRIV_GLINE))) return send_reply(sptr, ERR_NOPRIVILEGES); + agline = gline_find(mask, GLINE_ANY | GLINE_EXACT); + if (agline) { if (GlineIsLocal(agline) && !(flags & GLINE_LOCAL)) /* global over local */ gline_free(agline);