summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-01-07 22:11:18 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-01-07 22:11:18 +0000
commitadee2d71f5eb298c42819b954116eda0b806551d (patch)
tree1526095cba898cec304c17da5c96489f0495a77e
parentfe46f3c228ae993b59fbf5eca423c3171d90e1b3 (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
-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)
{