summaryrefslogtreecommitdiff
path: root/modules/m_svsmode.c
diff options
context:
space:
mode:
authormichael <michael@82007160-df01-0410-b94d-b575c5fd34c7>2013-05-16 07:55:30 +0000
committermichael <michael@82007160-df01-0410-b94d-b575c5fd34c7>2013-05-16 07:55:30 +0000
commitddd3eba5e73830c06a3724b10efa6aaf06c4c365 (patch)
treee84b8e6c739d3da655817ae7a4db38c6a89ac550 /modules/m_svsmode.c
parentaba42ce92038bc137c44842c886bcdbbae9794d9 (diff)
- m_svsmode(): restore ability to change a user's host via SVSMODE +
git-svn-id: svn://svn.ircd-hybrid.org/svnroot/ircd-hybrid/branches/8.1.x@2057 82007160-df01-0410-b94d-b575c5fd34c7
Diffstat (limited to 'modules/m_svsmode.c')
-rw-r--r--modules/m_svsmode.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/modules/m_svsmode.c b/modules/m_svsmode.c
index 815a85a..a045aa1 100644
--- a/modules/m_svsmode.c
+++ b/modules/m_svsmode.c
@@ -62,7 +62,7 @@ ms_svsmode(struct Client *client_p, struct Client *source_p,
{
struct Client *target_p = NULL;
int what = MODE_ADD;
- unsigned int flag = 0, setflags = 0;
+ unsigned int flag = 0, setmodes = 0;
char *m = NULL, *modes = NULL, *extarg = NULL;
time_t ts = 0;
@@ -87,7 +87,7 @@ ms_svsmode(struct Client *client_p, struct Client *source_p,
if (ts && (ts != target_p->tsinfo))
return;
- setflags = target_p->umodes;
+ setmodes = target_p->umodes;
for (m = modes; *m; ++m)
{
@@ -105,6 +105,11 @@ ms_svsmode(struct Client *client_p, struct Client *source_p,
strlcpy(target_p->svid, extarg, sizeof(target_p->svid));
break;
+ case 'x':
+ if (what == MODE_ADD && extarg)
+ user_set_hostmask(target_p, extarg);
+ break;
+
case 'o':
if (what == MODE_DEL && HasUMode(target_p, UMODE_OPER))
{
@@ -173,11 +178,11 @@ ms_svsmode(struct Client *client_p, struct Client *source_p,
target_p->name, (unsigned long)target_p->tsinfo, modes);
}
- if (MyConnect(target_p) && (setflags != target_p->umodes))
+ if (MyConnect(target_p) && (setmodes != target_p->umodes))
{
char modebuf[IRCD_BUFSIZE];
- send_umode(target_p, target_p, setflags, 0xffffffff, modebuf);
+ send_umode(target_p, target_p, setmodes, 0xffffffff, modebuf);
}
}