From ddd3eba5e73830c06a3724b10efa6aaf06c4c365 Mon Sep 17 00:00:00 2001 From: michael Date: Thu, 16 May 2013 07:55:30 +0000 Subject: - 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 --- modules/m_svsmode.c | 13 +++++++++---- 1 file 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); } } -- cgit