X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fdnsqueue.cpp;h=116f09010b963f50f56232e1e77d303c9a639721;hb=55bd1494b060dba7c266b91824f3fcce64a4d7a8;hp=f00c9e25de12bcf82be77f3743c6a375186e388e;hpb=194838af39aa5fc823571afe9d61b2453573a32d;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/dnsqueue.cpp b/src/dnsqueue.cpp index f00c9e25d..116f09010 100644 --- a/src/dnsqueue.cpp +++ b/src/dnsqueue.cpp @@ -23,7 +23,6 @@ using namespace std; #include "inspircd_util.h" #include "inspircd_config.h" #include -#include #include #include #include @@ -38,11 +37,7 @@ using namespace std; #include #include #include -#include #include -#include -#include -#include #include "connection.h" #include "users.h" #include "servers.h" @@ -57,7 +52,6 @@ using namespace std; #include "xline.h" #include "inspstring.h" #include "dnsqueue.h" -#include #include #include #include @@ -65,96 +59,22 @@ using namespace std; #include #include #include -#include -#include -#include -#include #include "dns.h" - -#ifdef GCC3 -#define nspace __gnu_cxx -#else -#define nspace std -#endif +#include "helperfuncs.h" +#include "hashcomp.h" extern int MaxWhoResults; extern std::vector modules; extern std::vector module_names; extern std::vector factory; -extern std::vector fd_reap; extern int MODCOUNT; -namespace nspace -{ -#ifdef GCC34 - template<> struct hash -#else - template<> struct nspace::hash -#endif - { - size_t operator()(const struct in_addr &a) const - { - size_t q; - memcpy(&q,&a,sizeof(size_t)); - return q; - } - }; -#ifdef GCC34 - template<> struct hash -#else - template<> struct nspace::hash -#endif - { - size_t operator()(const string &s) const - { - char a[MAXBUF]; - static struct hash strhash; - strlcpy(a,s.c_str(),MAXBUF); - strlower(a); - return strhash(a); - } - }; -} - - -struct StrHashComp -{ - - bool operator()(const string& s1, const string& s2) const - { - char a[MAXBUF],b[MAXBUF]; - strlcpy(a,s1.c_str(),MAXBUF); - strlcpy(b,s2.c_str(),MAXBUF); - strlower(a); - strlower(b); - return (strcasecmp(a,b) == 0); - } - -}; - -struct InAddr_HashComp -{ - - bool operator()(const in_addr &s1, const in_addr &s2) const - { - size_t q; - size_t p; - - memcpy(&q,&s1,sizeof(size_t)); - memcpy(&p,&s2,sizeof(size_t)); - - return (q == p); - } - -}; - - -typedef nspace::hash_map, StrHashComp> user_hash; -typedef nspace::hash_map, StrHashComp> chan_hash; -typedef nspace::hash_map, InAddr_HashComp> address_cache; -typedef nspace::hash_map, StrHashComp> whowas_hash; +typedef nspace::hash_map, irc::StrHashComp> user_hash; +typedef nspace::hash_map, irc::StrHashComp> chan_hash; +typedef nspace::hash_map, irc::InAddr_HashComp> address_cache; +typedef nspace::hash_map, irc::StrHashComp> whowas_hash; typedef std::deque command_table; extern user_hash clientlist; @@ -254,7 +174,7 @@ public: } }; -Lookup dnsq[MAXBUF]; +Lookup dnsq[255]; bool lookup_dns(std::string nick) { @@ -267,7 +187,7 @@ bool lookup_dns(std::string nick) Lookup L; if (L.DoLookup(nick)) { - for (int j = 0; j < MAXBUF; j++) + for (int j = 0; j < 255; j++) { if (!dnsq[j].GetFD()) { @@ -276,7 +196,7 @@ bool lookup_dns(std::string nick) } } // calculate the maximum value, this saves cpu time later - for (int p = 0; p < MAXBUF; p++) + for (int p = 0; p < 255; p++) if (dnsq[p].GetFD()) max_fd_alloc = p; } @@ -304,7 +224,7 @@ void dns_poll() } // looks like someones freed an item, recalculate end of list. if ((!dnsq[max_fd_alloc].GetFD()) && (max_fd_alloc != 0)) - for (int p = 0; p < MAXBUF; p++) + for (int p = 0; p < 255; p++) if (dnsq[p].GetFD()) max_fd_alloc = p;