diff options
Diffstat (limited to 'src/channels.c')
-rw-r--r-- | src/channels.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/channels.c b/src/channels.c index 3dafaf233..0651df12f 100644 --- a/src/channels.c +++ b/src/channels.c @@ -235,6 +235,19 @@ void chan_set_modes(const char *source, Channel * chan, int ac, char **av, mode, chan->name, user->nick); if (add) { + /* + Okay everyones biggest complaint is that NeoStats or any other + services clients are flagged as services but we still strip their + channel modes when strict is enabled. This lets them keep the mode and + we update our internal user/channel struct - TSL + */ + if (ircd->servicesmode) { + if (user->mode & ircd->servicesmode) { + chan_remove_user_status(chan, user, cum->status); + continue; + } + } + /* Fixes bug #68 - might be a bit ugly but it works, the idea is that since the is_valid function strips out all of the modes there is no point |