summaryrefslogtreecommitdiff
path: root/src
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 /src
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
Diffstat (limited to 'src')
-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)
{