]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/coremods/core_hostname_lookup.cpp
Improve the message sent when overriding channel modes.
[user/henk/code/inspircd.git] / src / coremods / core_hostname_lookup.cpp
index 60f858ecd986be36a1a686b8f8526047a6685221..91d817765a17cafb44629b7a11e46d6bdf490c57 100644 (file)
@@ -1,8 +1,9 @@
 /*
  * InspIRCd -- Internet Relay Chat Daemon
  *
+ *   Copyright (C) 2020 Matt Schatz <genius3000@g3k.solutions>
  *   Copyright (C) 2013-2015 Attila Molnar <attilamolnar@hush.com>
- *   Copyright (C) 2013, 2017-2019 Sadie Powell <sadie@witchery.services>
+ *   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
@@ -136,7 +137,8 @@ class UserResolver : public DNS::Request
                        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
@@ -175,7 +177,7 @@ class ModuleHostnameLookup : public Module
        {
                // 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.