-#ifndef NO_PROTOCOL9
- /* Send message to all 2.9 servers */
- /* This is a hack, because it assumes that we know how `vl' is build up */
- source = va_arg(vl, char *);
- tp = va_arg(vl, char *); /* Channel */
- msg = va_arg(vl, char *);
- for (member = chptr->members; member; member = member->next_member)
- {
- acptr = member->user;
- if (acptr->from == acptr || /* Skip local clients */
- Protocol(acptr->from) > 9 || /* Skip P10 servers */
- acptr->from == one || /* ...was the one I should skip */
- !IsChanOp(member) || /* Skip non chanops */
- IsZombie(member) || IsDeaf(acptr))
- continue;
- if (-1 < (i = acptr->from->fd) && sentalong[i] != sentalong_marker)
- {
- sentalong[i] = sentalong_marker;
- /* Don't send channel messages to links that are
- still eating the net.burst: -- Run 2/1/1997 */
- if (!IsBurstOrBurstAck(acptr->from))
- {
- struct Membership* other_member;
- struct Client* acptr2;
- tp = target;
- *tp = 0;
- /* Find all chanops in this direction: */
- for (other_member = chptr->members; other_member; other_member = other_member->next_member)
- {
- acptr2 = other_member->user;
- if (acptr2->from == acptr->from && acptr2->from != one &&
- IsChanOp(other_member) && !IsZombie(other_member) &&
- !IsDeaf(acptr2))
- {
- int len = strlen(acptr2->name);
- if (tp + len + 2 > target + sizeof(target))
- {
- sendto_prefix_one(acptr, from,
- ":%s NOTICE %s :%s", source, target, msg);
- tp = target;
- *tp = 0;
- }
- if (*target)
- strcpy(tp++, ",");
- strcpy(tp, acptr2->name);
- tp += len;
- }
- }
- sendto_prefix_one(acptr, from,
- ":%s NOTICE %s :%s", source, target, msg);
- }
- }
- }
-#endif