diff options
| author | michi <michi+ngircd@dataswamp.org> | 2021-03-23 10:08:58 +0100 |
|---|---|---|
| committer | Alexander Barton <alex@barton.de> | 2023-01-02 21:17:29 +0100 |
| commit | 24f956abf7d6972cc3503a6c60c2ac83e6a84b91 (patch) | |
| tree | 99baa4cda03f9dd42163e1559b12fa790bc8ae0b /src | |
| parent | 0652c99b39198f603d3a9f7b79406ffe1930a20d (diff) | |
| download | ngircd-24f956abf7d6972cc3503a6c60c2ac83e6a84b91.tar.gz ngircd-24f956abf7d6972cc3503a6c60c2ac83e6a84b91.zip | |
Allow ircops to use WHO on any channel.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ngircd/irc-info.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/ngircd/irc-info.c b/src/ngircd/irc-info.c index 82bd5518..03127b22 100644 --- a/src/ngircd/irc-info.c +++ b/src/ngircd/irc-info.c @@ -138,7 +138,7 @@ who_flags_qualifier(CLIENT *Client, const char *chan_user_modes, static bool IRC_WHO_Channel(CLIENT *Client, CHANNEL *Chan, bool OnlyOps) { - bool is_visible, is_member, is_ircop; + bool is_visible, is_member, is_ircop, is_oper; CL2CHAN *cl2chan; char flags[10]; CLIENT *c; @@ -148,9 +148,10 @@ IRC_WHO_Channel(CLIENT *Client, CHANNEL *Chan, bool OnlyOps) assert( Chan != NULL ); is_member = Channel_IsMemberOf(Chan, Client); + is_oper = Client_HasMode(Client, 'o'); /* Secret channel? */ - if (!is_member && Channel_HasMode(Chan, 's')) + if (!is_member && !is_oper && Channel_HasMode(Chan, 's')) return IRC_WriteStrClient(Client, RPL_ENDOFWHO_MSG, Client_ID(Client), Channel_Name(Chan)); @@ -163,7 +164,7 @@ IRC_WHO_Channel(CLIENT *Client, CHANNEL *Chan, bool OnlyOps) continue; is_visible = !Client_HasMode(c, 'i'); - if (is_member || is_visible) { + if (is_member || is_visible || is_oper) { memset(flags, 0, sizeof(flags)); if (Client_HasMode(c, 'a')) |