(resv, cmode +m, cmode +b, cmode +q, etc.).
This is only checked for local users.
For optimal compatibility, a failure for this reason still
returns ERR_CHANOPRIVSNEEDED.
Side effect: normal users cannot change topics of resv'ed
channels, even if they have ops, just like they already
cannot send messages. This only matters if resv_forcepart
is disabled, as the user would have been removed from the
channel otherwise.
return 0;
}
- if((chptr->mode.mode & MODE_TOPICLIMIT) == 0 || is_chanop(msptr))
+ if(((chptr->mode.mode & MODE_TOPICLIMIT) == 0 ||
+ is_chanop(msptr)) &&
+ (!MyClient(source_p) ||
+ can_send(chptr, source_p, msptr)))
{
char topic_info[USERHOST_REPLYLEN];
rb_sprintf(topic_info, "%s!%s@%s",