609 |
|
ubuf[1] = '\0'; |
610 |
|
} |
611 |
|
|
612 |
< |
/* arghhh one could try not introducing new nicks to ll leafs |
613 |
< |
* but then you have to introduce them "on the fly" in SJOIN |
614 |
< |
* not fun. |
615 |
< |
* Its not going to cost much more bandwidth to simply let new |
616 |
< |
* nicks just ride on through. |
617 |
< |
*/ |
618 |
< |
|
619 |
< |
/* We now introduce nicks "on the fly" in SJOIN anyway -- |
620 |
< |
* you _need_ to if you aren't going to burst everyone initially. |
621 |
< |
* |
622 |
< |
* Only send to non CAP_LL servers, unless we're a lazylink leaf, |
623 |
< |
* in that case just send it to the uplink. |
624 |
< |
* -davidt |
625 |
< |
* rewritten to cope with SIDs .. eww eww eww --is |
626 |
< |
*/ |
627 |
< |
if (!ServerInfo.hub && uplink && IsCapable(uplink, CAP_LL) && |
628 |
< |
client_p != uplink) |
612 |
> |
DLINK_FOREACH(server_node, serv_list.head) |
613 |
|
{ |
614 |
< |
if (IsCapable(uplink, CAP_TS6) && HasID(source_p)) |
615 |
< |
{ |
616 |
< |
sendto_one(uplink, ":%s UID %s %d %lu %s %s %s %s %s :%s", |
614 |
> |
struct Client *server = server_node->data; |
615 |
> |
|
616 |
> |
if (server == client_p) |
617 |
> |
continue; |
618 |
> |
|
619 |
> |
if (IsCapable(server, CAP_TS6) && HasID(source_p)) |
620 |
> |
sendto_one(server, ":%s UID %s %d %lu %s %s %s %s %s :%s", |
621 |
|
source_p->servptr->id, |
622 |
|
source_p->name, source_p->hopcount+1, |
623 |
|
(unsigned long)source_p->tsinfo, |
624 |
|
ubuf, source_p->username, source_p->host, |
625 |
|
(MyClient(source_p) && IsIPSpoof(source_p)) ? |
626 |
|
"0" : source_p->sockhost, source_p->id, source_p->info); |
639 |
– |
} |
627 |
|
else |
628 |
< |
{ |
642 |
< |
sendto_one(uplink, "NICK %s %d %lu %s %s %s %s :%s", |
628 |
> |
sendto_one(server, "NICK %s %d %lu %s %s %s %s :%s", |
629 |
|
source_p->name, source_p->hopcount+1, |
630 |
|
(unsigned long)source_p->tsinfo, |
631 |
|
ubuf, source_p->username, source_p->host, |
632 |
|
source_p->servptr->name, source_p->info); |
647 |
– |
} |
648 |
– |
} |
649 |
– |
else |
650 |
– |
{ |
651 |
– |
DLINK_FOREACH(server_node, serv_list.head) |
652 |
– |
{ |
653 |
– |
struct Client *server = server_node->data; |
654 |
– |
|
655 |
– |
if (IsCapable(server, CAP_LL) || server == client_p) |
656 |
– |
continue; |
657 |
– |
|
658 |
– |
if (IsCapable(server, CAP_TS6) && HasID(source_p)) |
659 |
– |
sendto_one(server, ":%s UID %s %d %lu %s %s %s %s %s :%s", |
660 |
– |
source_p->servptr->id, |
661 |
– |
source_p->name, source_p->hopcount+1, |
662 |
– |
(unsigned long)source_p->tsinfo, |
663 |
– |
ubuf, source_p->username, source_p->host, |
664 |
– |
(MyClient(source_p) && IsIPSpoof(source_p)) ? |
665 |
– |
"0" : source_p->sockhost, source_p->id, source_p->info); |
666 |
– |
else |
667 |
– |
sendto_one(server, "NICK %s %d %lu %s %s %s %s :%s", |
668 |
– |
source_p->name, source_p->hopcount+1, |
669 |
– |
(unsigned long)source_p->tsinfo, |
670 |
– |
ubuf, source_p->username, source_p->host, |
671 |
– |
source_p->servptr->name, source_p->info); |
672 |
– |
} |
633 |
|
} |
634 |
|
} |
635 |
|
|
1115 |
|
struct Client *target_p = ptr->data; |
1116 |
|
|
1117 |
|
if ((target_p != client_p) && (target_p != source_p)) |
1118 |
< |
{ |
1119 |
< |
if ((!(ServerInfo.hub && IsCapable(target_p, CAP_LL))) || |
1120 |
< |
(target_p->localClient->serverMask & |
1161 |
< |
source_p->lazyLinkClientExists)) |
1162 |
< |
sendto_one(target_p, ":%s MODE %s :%s", |
1163 |
< |
ID_or_name(source_p, target_p), |
1164 |
< |
ID_or_name(source_p, target_p), buf); |
1165 |
< |
} |
1118 |
> |
sendto_one(target_p, ":%s MODE %s :%s", |
1119 |
> |
ID_or_name(source_p, target_p), |
1120 |
> |
ID_or_name(source_p, target_p), buf); |
1121 |
|
} |
1122 |
|
} |
1123 |
|
|