504 |
member = uptr->data; |
member = uptr->data; |
505 |
target_p = member->client_p; |
target_p = member->client_p; |
506 |
|
|
507 |
if (target_p == user || IsDefunct(target_p) || |
if (IsDefunct(target_p)) |
508 |
target_p->connection->serial == current_serial) |
continue; |
509 |
|
|
510 |
|
if (target_p == user) |
511 |
|
continue; |
512 |
|
|
513 |
|
if (target_p->connection->serial == current_serial) |
514 |
continue; |
continue; |
515 |
|
|
516 |
if (poscap && HasCap(target_p, poscap) != poscap) |
if (poscap && HasCap(target_p, poscap) != poscap) |
595 |
* output - 1 or 0 if match or not |
* output - 1 or 0 if match or not |
596 |
* side effects - NONE |
* side effects - NONE |
597 |
*/ |
*/ |
598 |
static int |
static bool |
599 |
match_it(const struct Client *one, const char *mask, unsigned int what) |
match_it(const struct Client *one, const char *mask, unsigned int what) |
600 |
{ |
{ |
601 |
if (what == MATCH_HOST) |
if (what == MATCH_HOST) |
636 |
{ |
{ |
637 |
struct Client *client_p = node->data; |
struct Client *client_p = node->data; |
638 |
|
|
639 |
if ((one == NULL || client_p != one->from) && !IsDefunct(client_p)) |
if (IsDefunct(client_p)) |
640 |
if (match_it(client_p, mask, what)) |
continue; |
641 |
send_message(client_p, local_buf); |
|
642 |
|
if (one && client_p == one->from) |
643 |
|
continue; |
644 |
|
|
645 |
|
if (match_it(client_p, mask, what) == false) |
646 |
|
continue; |
647 |
|
|
648 |
|
send_message(client_p, local_buf); |
649 |
} |
} |
650 |
|
|
651 |
/* Now scan servers */ |
/* Now scan servers */ |
677 |
* server deal with it. |
* server deal with it. |
678 |
* -wnder |
* -wnder |
679 |
*/ |
*/ |
680 |
if ((one == NULL || client_p != one->from) && !IsDefunct(client_p)) |
if (IsDefunct(client_p)) |
681 |
send_message_remote(client_p, from, remote_buf); |
continue; |
682 |
|
|
683 |
|
if (one && client_p == one->from) |
684 |
|
continue; |
685 |
|
|
686 |
|
send_message_remote(client_p, from, remote_buf); |
687 |
} |
} |
688 |
|
|
689 |
dbuf_ref_free(local_buf); |
dbuf_ref_free(local_buf); |