diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-01-07 22:11:18 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-01-07 22:11:18 +0000 |
commit | adee2d71f5eb298c42819b954116eda0b806551d (patch) | |
tree | 1526095cba898cec304c17da5c96489f0495a77e | |
parent | fe46f3c228ae993b59fbf5eca423c3171d90e1b3 (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.cpp | 13 |
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) { |