static bool
has_common_channel(struct Client *source_p, struct Client *target_p)
{
- rb_dlink_node *ptr;
+ rb_dlink_node *ps, *pt;
+ struct membership *ms, *mt;
+ struct Channel *chptr;
- RB_DLINK_FOREACH(ptr, source_p->user->channel.head)
+ ITER_COMM_CHANNELS(ps, pt, source_p->user->channel.head, target_p->user->channel.head, ms, mt, chptr)
{
- struct membership *msptr = ptr->data;
- if (IsMember(target_p, msptr->chptr))
+ if (ms != NULL && mt != NULL)
return true;
}
return true;
/* XXX: controversial? allow opers to send through +g */
- if (IsOper(source_p))
+ if (IsOperGeneral(source_p))
return true;
if (accept_message(source_p, target_p))
if(msgtype != MESSAGE_TYPE_NOTICE &&
IsSetAnyCallerID(source_p) &&
!accept_message(target_p, source_p) &&
- !IsOper(target_p))
+ !IsOperGeneral(target_p))
{
if(rb_dlink_list_length(&source_p->localClient->allow_list) <
(unsigned long)ConfigFileEntry.max_accept)