Commit Diff
Diff:
35ed57e6c160dc13c2bbca2ca042406285d4ced3
44b7ff02fd34731c6ed0d552dbde5c9981d53127
Commit:
44b7ff02fd34731c6ed0d552dbde5c9981d53127
Tree:
6f55f55dcd678628fa81dcbf3b6f45c9c888ff73
Author:
Alexander Barton <alex@barton.de>
Committer:
Alexander Barton <alex@barton.de>
Date:
Mon Nov 5 22:46:26 2012 UTC
Message:
Don't cloak already cloaked hostname when using METADATA 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.
blob - 92262b5d8b00c0ae3248c3010032ee8ff13ac0e1
blob + 2f8d771cc2ff81253cf62925757d7645ce39d539
--- src/ngircd/client.c
+++ src/ngircd/client.c
@@ -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);
IRCNow