diff --git a/src/s_user.c b/src/s_user.c index 1e7e643..fa7d6d6 100644 --- a/src/s_user.c +++ b/src/s_user.c @@ -19,7 +19,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA * - * $Id: s_user.c,v 1.34 2002/10/15 03:18:15 fishwaldo Exp $ + * $Id: s_user.c,v 1.35 2002/10/15 03:25:37 fishwaldo Exp $ */ #include "stdinc.h" @@ -1103,7 +1103,7 @@ user_mode(struct Client *client_p, struct Client *source_p, int parc, char *parv me.name, parv[0]); target_p->umodes &= ~FLAGS_ADMIN; } - if (!IsUlined(target_p->servptr) && (flag & FLAGS_SERVICES)) + if (!IsUlined(target_p->servptr) && (flag & FLAGS_SERVICES) && !(setflags & FLAGS_SERVICES)) { sendto_one(source_p, ":%s NOTICE %s :*** Only Services can set +S", me.name, parv[0]); @@ -1112,7 +1112,7 @@ user_mode(struct Client *client_p, struct Client *source_p, int parc, char *parv /* if the +r isn't from a U lined server, or from the clients server ** then its a error */ - if ((!IsUlined(source_p) && (source_p != target_p->servptr)) && (flag & FLAGS_REGNICK)) + if ((!IsUlined(source_p) && (source_p != target_p->servptr)) && (flag & FLAGS_REGNICK) && !(setflags & FLAGS_REGNICK)) { sendto_one(source_p, ":%s NOTICE %s :*** Only Services can set +r", me.name, parv[0]);