]> arthur.barton.de Git - ngircd-alex.git/commitdiff
Don't cloak already cloaked hostname when using METADATA
authorAlexander Barton <alex@barton.de>
Mon, 5 Nov 2012 22:46:26 +0000 (23:46 +0100)
committerAlexander Barton <alex@barton.de>
Mon, 5 Nov 2012 22:46:26 +0000 (23:46 +0100)
A client for which a METADATA command has been received from one of
its peers got the client flag "M" set. So it's safe to assume that
such a client gets "METADATA host" commands for its cloaked hostname
and the server must not cloak the hostname on its own, even when the
client mode "+x" is set.

src/ngircd/client.c

index 92262b5d8b00c0ae3248c3010032ee8ff13ac0e1..2f8d771cc2ff81253cf62925757d7645ce39d539 100644 (file)
@@ -702,9 +702,16 @@ Client_HostnameCloaked(CLIENT *Client)
 
        assert(Client != NULL);
 
+       /* Client isn't cloaked at all, return real hostname: */
        if (!Client_HasMode(Client, 'x'))
                return Client_Hostname(Client);
 
+       /* Client has received METADATA command, so it got the eventually
+        * cloaked hostname set correctly and this server doesn't need
+        * to cloak it on its own: */
+       if (strchr(Client_Flags(Client), 'M'))
+               return Client_Hostname(Client);
+
        /* Do simple mapping to the server ID? */
        if (!*Conf_CloakHostModeX)
                return Client_ID(Client->introducer);