--- src/channel.c.orig Mon May 14 21:12:53 2001 +++ src/channel.c Mon May 14 21:18:13 2001 @@ -754,8 +754,13 @@ bcopy((char *)mode, (char *)&oldm, sizeof(Mode)); ischop = IsServer(sptr) || is_chan_op(sptr, chptr); isdeop = !ischop && !IsServer(sptr) && is_deopped(sptr, chptr); +#ifdef OPER_CHANNEL_OP_HACK isok = ischop || (!isdeop && IsServer(cptr) && - chptr->channelts); + chptr->channelts) || IsAnOper(sptr); +#else + isok = ischop || (!isdeop && IsServer(cptr) && + chptr->channelts); +#endif new = mode->mode; while (curr && *curr && count >= 0) --- include/config.h.orig Mon May 14 21:25:54 2001 +++ include/config.h Mon May 14 21:23:16 2001 @@ -910,6 +910,14 @@ */ #define HYBRID_SOMAXCONN 25 +/* + * Allow server opers to give/take OP in a channel.. + * Note: This is small hack. The Oper can't give/take his own + * op status. + * + * by Simon Nielsen +*/ +#define OPER_CHANNEL_OP_HACK /* ----------------- archaic and/or broken secion -------------------- */