- sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED),
- me.name, source_p->name, parv[2]);
- return 0;
+ hdata.chptr = chptr;
+ hdata.msptr = msptr;
+ hdata.client = source_p;
+ hdata.target = target_p;
+ hdata.approved = !(is_chanop(msptr) || (chptr->mode.mode & MODE_FREEINVITE));
+
+ call_hook(can_invite_hook, &hdata);
+ if (hdata.approved)
+ {
+ if (hdata.error)
+ sendto_one_numeric(source_p, hdata.approved, "%s", hdata.error);
+ else
+ sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED),
+ me.name, source_p->name, parv[2]);
+
+ return;
+ }