]> jfr.im git - irc/freenode/solanum.git/commitdiff
chmode: Get elevated access for op-only queries
authorEd Kellett <redacted>
Thu, 5 Nov 2020 22:19:00 +0000 (22:19 +0000)
committerEd Kellett <redacted>
Sun, 8 Nov 2020 00:26:27 +0000 (00:26 +0000)
include/channel.h
ircd/chmode.c

index 21cefa7c4310f2797a371f116c1fd7b7979b5ad0..bb1da83f3a504bc0ad63fa008d92ec6b2a52547e 100644 (file)
@@ -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))
index 7b7dc5528d6fa4c6b35a641206d4680031830ae5..8ac45e55cd762436af7d3b3eb77b9db358c8702c 100644 (file)
@@ -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;