/*
* InspIRCd -- Internet Relay Chat Daemon
*
- * Copyright (C) 2013-2016 Adam <Adam@anope.org>
+ * Copyright (C) 2020 Matt Schatz <genius3000@g3k.solutions>
+ * Copyright (C) 2013-2015 Attila Molnar <attilamolnar@hush.com>
+ * Copyright (C) 2013, 2017-2020 Sadie Powell <sadie@witchery.services>
+ * Copyright (C) 2013, 2016 Adam <Adam@anope.org>
*
* This file is part of InspIRCd. InspIRCd is free software: you can
* redistribute it and/or modify it under the terms of the GNU General Public
const DNS::ResourceRecord* ans_record = r->FindAnswerOfType(this->question.type);
if (ans_record == NULL)
{
- HandleError(user, "Could not resolve your hostname: No " + this->manager->GetTypeStr(this->question.type) + " records found");
+ HandleError(bound_user, "Could not resolve your hostname: No " + this->manager->GetTypeStr(this->question.type) + " records found");
return;
}
if (rev_match)
{
bound_user->WriteNotice("*** Found your hostname (" + this->question.name + (r->cached ? ") -- cached" : ")"));
- bound_user->ChangeRealHost(this->question.name, true);
+ bool display_is_real = bound_user->GetDisplayedHost() == bound_user->GetRealHost();
+ bound_user->ChangeRealHost(this->question.name, display_is_real);
dl->unset(bound_user);
}
else
{
LocalUser* bound_user = IS_LOCAL(ServerInstance->FindUUID(uuid));
if (bound_user)
- HandleError("Could not resolve your hostname: " + this->manager->GetErrorStr(query->error));
+ HandleError(bound_user, "Could not resolve your hostname: " + this->manager->GetErrorStr(query->error));
}
};
{
// If core_dns is not loaded or hostname resolution is disabled for the user's
// connect class then the logic in this function does not apply.
- if (!DNS || !user->MyClass->resolvehostnames)
+ if (!DNS || user->quitting || !user->MyClass->resolvehostnames)
return;
// Clients can't have a DNS hostname if they aren't connected via IPv4 or IPv6.