/* unconditionally require ops, unless the channel is +g */
/* treat remote clients as chanops */
- if(MyClient(source_p) && !is_chanop(msptr) &&
+ if(MyClient(source_p) && !is_any_op(msptr) && !IsOverride(source_p) &&
!(chptr->mode.mode & MODE_FREEINVITE))
{
sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED),
return 0;
}
+ if (IsSetNoInvite(target_p))
+ {
+ sendto_one_numeric(source_p, ERR_NOINVITE,
+ form_str(ERR_NOINVITE),
+ target_p->name);
+ return 0;
+ }
+
/* store invites when they could affect the ability to join
* for +l/+j just check if the mode is set, this varies over time
*/