return 0;
}
- if(!is_chanop(msptr))
+ if(get_channel_access(source_p, msptr, MODE_ADD) < CHFL_CHANOP)
{
if(MyConnect(source_p))
{
* There are two cases we can get to this point then...
*
* 1) connect burst is happening, and for some reason a legit
- * op has sent a KICK, but the SJOIN hasn't happened yet or
+ * op has sent a KICK, but the SJOIN hasn't happened yet or
* been seen. (who knows.. due to lag...)
*
* 2) The channel is desynced. That can STILL happen with TS
- *
- * Now, the old code roger wrote, would allow the KICK to
+ *
+ * Now, the old code roger wrote, would allow the KICK to
* go through. Thats quite legit, but lets weird things like
* KICKS by users who appear not to be chanopped happen,
* or even neater, they appear not to be on the channel.
hookdata.client = source_p;
hookdata.chptr = chptr;
+ hookdata.msptr = msptr;
hookdata.target = who;
hookdata.approved = 1;
+ hookdata.dir = MODE_ADD; /* ensure modules like override speak up */
call_hook(h_can_kick, &hookdata);