diff options
author | w00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-10-21 20:09:52 +0000 |
---|---|---|
committer | w00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-10-21 20:09:52 +0000 |
commit | af739bfa5fbb8070dd3b0d21bdda493cb3052588 (patch) | |
tree | a3e92b9c395c558c15a5b9b745d06f2673397626 /src | |
parent | f561b32be27117fa16f7123adfd4e767e9e17561 (diff) |
Move DNS timeouts into the UserResolver class, where they should have been (but seems to have been overlooked due to the relics of 1.0). This simplifies some stuff :)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8278 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src')
-rw-r--r-- | src/user_resolver.cpp | 13 | ||||
-rw-r--r-- | src/userprocess.cpp | 20 |
2 files changed, 7 insertions, 26 deletions
diff --git a/src/user_resolver.cpp b/src/user_resolver.cpp index adae765eb..e7ae1ed07 100644 --- a/src/user_resolver.cpp +++ b/src/user_resolver.cpp @@ -22,6 +22,7 @@ UserResolver::UserResolver(InspIRCd* Instance, User* user, std::string to_resolv void UserResolver::OnLookupComplete(const std::string &result, unsigned int ttl, bool cached, int resultnum) { + ServerInstance->Log(DEBUG, "Got a result (lookup complete)"); /* We are only interested in the first matching result */ if (resultnum) return; @@ -102,16 +103,12 @@ void UserResolver::OnLookupComplete(const std::string &result, unsigned int ttl, void UserResolver::OnError(ResolverError e, const std::string &errormessage) { + ServerInstance->Log(DEBUG, "Resolver error: " + errormessage); if (ServerInstance->SE->GetRef(this->bound_fd) == this->bound_user) { - /* Since dns timeout is implemented outside of the resolver, this was a race condition that could result in this message being sent *after* - * the user was fully connected. This check fixes that issue - Special */ - if (!this->bound_user->dns_done) - { - /* Error message here */ - this->bound_user->WriteServ("NOTICE Auth :*** Could not resolve your hostname: %s; using your IP address (%s) instead.", errormessage.c_str(), this->bound_user->GetIPString()); - this->bound_user->dns_done = true; - } + this->bound_user->WriteServ("NOTICE Auth :*** Could not resolve your hostname: %s; using your IP address (%s) instead.", errormessage.c_str(), this->bound_user->GetIPString()); + this->bound_user->dns_done = true; + ServerInstance->stats->statsDnsBad++; } } diff --git a/src/userprocess.cpp b/src/userprocess.cpp index 407aca5b3..c4ce93d6a 100644 --- a/src/userprocess.cpp +++ b/src/userprocess.cpp @@ -188,29 +188,13 @@ void InspIRCd::DoBackgroundUserStuff() /* * `ready` means that the user has provided NICK/USER(/PASS), and all modules agree - * that the user is okay to proceed. The one thing we are then waiting for is DNS, which we do here... + * that the user is okay to proceed. The one thing we are then waiting for now is DNS... */ bool ready = ((curr->registered == REG_NICKUSER) && AllModulesReportReady(curr)); if (ready) { - if (!curr->dns_done) - { - /* - * DNS isn't done yet? - * Cool. Check for timeout. - */ - if (TIME > curr->signon) - { - /* FZZZZZZZZT, timeout! */ - curr->WriteServ("NOTICE Auth :*** Could not resolve your hostname: Request timed out; using your IP address (%s) instead.", curr->GetIPString()); - curr->dns_done = true; - this->stats->statsDnsBad++; - curr->FullConnect(); - continue; - } - } - else + if (curr->dns_done) { /* DNS passed, connect the user */ curr->FullConnect(); |