]> jfr.im git - irc/unrealircd/unrealircd.git/commitdiff
Fix bug where halfops don't see users JOIN if chmode +D is set.
authorBram Matthys <redacted>
Sun, 9 Sep 2018 15:15:49 +0000 (17:15 +0200)
committerBram Matthys <redacted>
Sun, 9 Sep 2018 15:15:49 +0000 (17:15 +0200)
Reported by The_Myth in https://bugs.unrealircd.org/view.php?id=5123

src/modules/m_join.c
src/send.c

index 3fd515458c41c2ab4d82928ed57a14b3cecd5a87..131bd61805c1665d1388d854c77aec924d8f303e 100644 (file)
@@ -201,7 +201,7 @@ void _send_join_to_local_users(aClient *sptr, aChannel *chptr)
                if (!MyConnect(acptr))
                        continue; /* only locally connected clients */
 
-               if (chanops_only && !(lp->flags & (CHFL_CHANOP|CHFL_CHANOWNER|CHFL_CHANPROT)) && (sptr != acptr))
+               if (chanops_only && !(lp->flags & (CHFL_HALFOP|CHFL_CHANOP|CHFL_CHANOWNER|CHFL_CHANPROT)) && (sptr != acptr))
                        continue; /* skip non-ops if requested to (used for mode +D), but always send to 'sptr' */
 
                if (acptr->local->proto & PROTO_CAP_EXTENDED_JOIN)
index 2b546ccd75de1707cc7f5941b0820270ad2ed62e..b41db3789dddba61ccb20ceca4b394c5d4239112 100644 (file)
@@ -444,7 +444,7 @@ void sendto_chanops_butone(aClient *one, aChannel *chptr, char *pattern, ...)
        for (lp = chptr->members; lp; lp = lp->next)
        {
                acptr = lp->cptr;
-               if (acptr == one || !(lp->flags & (CHFL_CHANOP|CHFL_CHANOWNER|CHFL_CHANPROT)))
+               if (acptr == one || !(lp->flags & (CHFL_HALFOP|CHFL_CHANOP|CHFL_CHANOWNER|CHFL_CHANPROT)))
                        continue;       /* ...was the one I should skip
                                           or user not not a channel op */
                if (MyConnect(acptr) && IsRegisteredUser(acptr))