X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fdnsqueue.cpp;h=fb0e0bd75999900c96170afed78f019b5253c63f;hb=c4458ecc70025aeac7ca87115ed0a698e7bbcdad;hp=e1a856c34ee6e8ad70a9dbab155341673295592a;hpb=6e255658272a3c566b2a9d5c9a0f2c2035910c60;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/dnsqueue.cpp b/src/dnsqueue.cpp index e1a856c34..fb0e0bd75 100644 --- a/src/dnsqueue.cpp +++ b/src/dnsqueue.cpp @@ -39,6 +39,7 @@ class Lookup; Lookup* dnslist[MAX_DESCRIPTORS]; Lookup* user_fd_to_dns[MAX_DESCRIPTORS]; +extern userrec* fd_ref_table[MAX_DESCRIPTORS]; //enum LookupState { reverse, forward }; @@ -112,17 +113,18 @@ public: } if ((hostname != "") && (usr->registered != 7)) { - if ((std::string((char*)inet_ntoa(usr->ip4)) == ip) && (hostname.length() < 65)) + if ((std::string(inet_ntoa(usr->ip4)) == ip) && (hostname.length() < 65)) { - strlcpy(usr->host,hostname.c_str(),64); - strlcpy(usr->dhost,hostname.c_str(),64); - /*address_cache::iterator address = addrcache.find(usr->ip4); - if (address == addrcache.end()) + if ((hostname.find_last_of(".in-addr.arpa") == hostname.length() - 1) && (hostname.find_last_of(".in-addr.arpa") != std::string::npos)) { - log(DEBUG,"Caching hostname %s -> %s",(char*)inet_ntoa(usr->ip4),hostname.c_str()); - addrcache[usr->ip4] = new std::string(hostname); - }*/ - WriteServ(usr->fd,"NOTICE Auth :*** Found your hostname"); + WriteServ(usr->fd,"NOTICE Auth :*** Your ISP are muppets -- reverse resolution resolves back to same reverse .arpa domain (!)"); + } + else + { + strlcpy(usr->host,hostname.c_str(),64); + strlcpy(usr->dhost,hostname.c_str(),64); + WriteServ(usr->fd,"NOTICE Auth :*** Found your hostname"); + } } usr->dns_done = true; return true; @@ -238,6 +240,19 @@ bool lookup_dns(const std::string &nick) void ZapThisDns(int fd) { +#ifdef THREADED_DNS +/* if (fd_ref_table[fd]) + { + if (fd_ref_table[fd]->registered >= 3) + { + log(DEBUG,"Joining thread for user %d",fd); + if (pthread_join(fd_ref_table[fd]->dnsthread, NULL)) + { + log(DEBUG,"Can't pthread_join(): %s", strerror(errno)); + } + } + }*/ +#else if ((fd < 0) || (fd > MAX_DESCRIPTORS)) return; @@ -257,6 +272,7 @@ void ZapThisDns(int fd) dns_close(x->resolver2.GetFD()); } } +#endif } void dns_poll(int fdcheck)