aboutsummaryrefslogtreecommitdiff
path: root/src/cmd_nick.cpp
diff options
context:
space:
mode:
authorGravatar brain2007-01-07 22:11:18 +0000
committerGravatar brain2007-01-07 22:11:18 +0000
commitadee2d71f5eb298c42819b954116eda0b806551d (patch)
tree1526095cba898cec304c17da5c96489f0495a77e /src/cmd_nick.cpp
parentDocument dns caching, add a "bool cached" to OnLookupComplete method in Resol... (diff)
If the result is cached, dont bother waiting for the dns timeout, release them at the next timer tick if all modules are satisfied
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6255 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/cmd_nick.cpp')
-rw-r--r--src/cmd_nick.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/cmd_nick.cpp b/src/cmd_nick.cpp
index 4b3317a9f..21723fafc 100644
--- a/src/cmd_nick.cpp
+++ b/src/cmd_nick.cpp
@@ -131,15 +131,22 @@ CmdResult cmd_nick::Handle (const char** parameters, int pcnt, userrec *user)
if (ServerInstance->Config->NoUserDns)
{
user->dns_done = true;
+ ServerInstance->next_call = ServerInstance->Time();
}
else
{
user->StartDNSLookup();
if (user->dns_done)
- ServerInstance->Log(DEBUG,"Aborting dns lookup of %s because dns server experienced a failure.",user->nick);
+ {
+ /* Cached result or instant failure - fall right through if possible */
+ ServerInstance->next_call = ServerInstance->Time();
+ }
+ else
+ {
+ if (ServerInstance->next_call > ServerInstance->Time() + ServerInstance->Config->dns_timeout)
+ ServerInstance->next_call = ServerInstance->Time() + ServerInstance->Config->dns_timeout;
+ }
}
- if (ServerInstance->next_call > ServerInstance->Time() + ServerInstance->Config->dns_timeout)
- ServerInstance->next_call = ServerInstance->Time() + ServerInstance->Config->dns_timeout;
}
if (user->registered == REG_NICKUSER)
{