ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/user.c
(Generate patch)

Comparing ircd-hybrid-7.2/src/s_user.c (file contents):
Revision 882 by michael, Sun Oct 28 11:58:39 2007 UTC vs.
Revision 885 by michael, Wed Oct 31 18:09:24 2007 UTC

# Line 609 | Line 609 | introduce_client(struct Client *client_p
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  
# Line 1155 | Line 1115 | send_umode_out(struct Client *client_p,
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  

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)