summaryrefslogtreecommitdiff
path: root/src/channel.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/channel.c')
-rw-r--r--src/channel.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/channel.c b/src/channel.c
index f96f705..fb453e3 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -436,7 +436,7 @@ channel_member_names(struct Client *source_p, struct Channel *chptr,
int multi_prefix = HasCap(source_p, CAP_MULTI_PREFIX) != 0;
int uhnames = HasCap(source_p, CAP_UHNAMES) != 0;
- if (PubChannel(chptr) || is_member)
+ if (PubChannel(chptr) || is_member || HasUMode(source_p, UMODE_GOD))
{
t = lbuf + snprintf(lbuf, sizeof(lbuf), form_str(RPL_NAMREPLY),
me.name, source_p->name,
@@ -447,7 +447,8 @@ channel_member_names(struct Client *source_p, struct Channel *chptr,
{
const struct Membership *ms = ptr->data;
- if (HasUMode(ms->client_p, UMODE_INVISIBLE) && !is_member)
+ if (HasUMode(ms->client_p, UMODE_INVISIBLE) && !is_member &&
+ !HasUMode(source_p, UMODE_GOD))
continue;
if (!uhnames)
@@ -750,7 +751,8 @@ can_send(struct Channel *chptr, struct Client *source_p,
{
struct MaskItem *conf = NULL;
- if (IsServer(source_p) || HasFlag(source_p, FLAGS_SERVICE) || HasUMode(source_p, UMODE_GCHANOP))
+ if (IsServer(source_p) || HasFlag(source_p, FLAGS_SERVICE) ||
+ HasUMode(source_p, UMODE_GOD))
return CAN_SEND_OPV;
if (MyClient(source_p) && !IsExemptResv(source_p))