From ea41b24fd4807e3565bf5f8f293e2efc4c20b62d Mon Sep 17 00:00:00 2001 From: Ed Kellett Date: Thu, 5 Nov 2020 22:19:00 +0000 Subject: [PATCH] chmode: Get elevated access for op-only queries --- include/channel.h | 1 + ircd/chmode.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/include/channel.h b/include/channel.h index 21cefa7c..bb1da83f 100644 --- a/include/channel.h +++ b/include/channel.h @@ -191,6 +191,7 @@ typedef int (*ExtbanFunc)(const char *data, struct Client *client_p, #define MODE_QUERY 0 #define MODE_ADD 1 #define MODE_DEL -1 +#define MODE_OP_QUERY 2 #define SecretChannel(x) ((x) && ((x)->mode.mode & MODE_SECRET)) #define HiddenChannel(x) ((x) && ((x)->mode.mode & MODE_PRIVATE)) diff --git a/ircd/chmode.c b/ircd/chmode.c index 7b7dc552..8ac45e55 100644 --- a/ircd/chmode.c +++ b/ircd/chmode.c @@ -1457,6 +1457,8 @@ set_channel_mode(struct Client *client_p, struct Client *source_p, if (effective_dir != MODE_QUERY && access_dir == MODE_QUERY) access_dir = effective_dir; + if (effective_dir == MODE_QUERY && cm->flags & CHM_OPS_QUERY) + access_dir = MODE_OP_QUERY; ms->cm = cm; ms->dir = effective_dir;