usermode fixes

This commit is contained in:
fishwaldo 2002-10-15 03:25:37 +00:00
parent b6aae5e158
commit 57dea6cd93

View file

@ -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]);