]> arthur.barton.de Git - ngircd-alex.git/commitdiff
Fix server list announcement
authorTassilo Schweyer <dev@welterde.de>
Sat, 25 Apr 2009 22:23:40 +0000 (00:23 +0200)
committerFlorian Westphal <fw@strlen.de>
Sat, 25 Apr 2009 22:30:49 +0000 (00:30 +0200)
When ngircd announces the list of currently known servers
to a new (connecting) server, it sent the introducer of
the servers instead of the top server.

Assuming this network:

irc1.example.com
|--irc2.example.com
|    `--irc3.example.com
|         `--irc4.example.com
`--irc5.example.com

When irc4 connects to irc3, irc3 tells irc4 that irc5 was
connected to irc2. (irc2 had introduced irc5 to irc3; but thats
not what ngircd should have sent to the new server).

This also placed users on the wrong servers.

src/ngircd/numeric.c

index 74c5c12bebc44f6056ba2dc0f04856cda3deb242..c3d94c3db7b53c5614fbfaf6cd6ddf1ebb60be65 100644 (file)
@@ -131,7 +131,7 @@ Announce_Server(CLIENT * Client, CLIENT * Server)
        if (Client_Hops(Server) == 1)
                c = Client_ThisServer();
        else
-               c = Client_Introducer(Server);
+               c = Client_TopServer(Server);
 
        /* Inform new server about the one already registered in the network */
        return IRC_WriteStrClientPrefix(Client, c, "SERVER %s %d %d :%s",