| 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 |
|
|