diff options
| author | Alexander Barton <alex@barton.de> | 2012-11-05 23:46:26 +0100 |
|---|---|---|
| committer | Alexander Barton <alex@barton.de> | 2012-11-05 23:46:26 +0100 |
| commit | 44b7ff02fd34731c6ed0d552dbde5c9981d53127 (patch) | |
| tree | 6f55f55dcd678628fa81dcbf3b6f45c9c888ff73 /src | |
| parent | 35ed57e6c160dc13c2bbca2ca042406285d4ced3 (diff) | |
| download | ngircd-44b7ff02fd34731c6ed0d552dbde5c9981d53127.tar.gz ngircd-44b7ff02fd34731c6ed0d552dbde5c9981d53127.zip | |
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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ngircd/client.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/ngircd/client.c b/src/ngircd/client.c index 92262b5d..2f8d771c 100644 --- a/src/ngircd/client.c +++ b/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); |