#include <time.h>
#include <sys/types.h>
#include <sys/socket.h>
-#include <sys/poll.h>
#include <sys/time.h>
#include <netinet/in.h>
#include <string.h>
#include "socketengine.h"
extern SocketEngine* SE;
-typedef nspace::hash_map<std::string, userrec*, nspace::hash<string>, irc::StrHashComp> user_hash;
-extern user_hash clientlist;
-extern char DNSServer[MAXBUF];
+extern ServerConfig* Config;
class Lookup;
userrec* usr = Find(nick);
if (usr)
{
- resolver1.SetNS(std::string(DNSServer));
+ resolver1.SetNS(std::string(Config->DNSServer));
if (!resolver1.ReverseLookup(std::string(usr->host)))
{
return false;
strlcpy(u,nick.c_str(),NICKMAX);
/* ASSOCIATE WITH DNS LOOKUP LIST */
- dnslist[resolver1.GetFD()] = this;
-
- return true;
+ if (resolver1.GetFD() != -1)
+ {
+ dnslist[resolver1.GetFD()] = this;
+ return true;
+ }
}
return false;
}
{
usr = Find(u);
if ((usr) && (usr->dns_done))
+ {
+ if (resolver1.GetFD() != -1)
+ dnslist[resolver1.GetFD()] = NULL;
return true;
+ }
if (resolver1.GetFD() != -1)
{
dnslist[resolver1.GetFD()] = NULL;
if (hostname != "")
{
resolver2.ForwardLookup(hostname);
- if (resolver2.GetFD())
+ if (resolver2.GetFD() != -1)
dnslist[resolver2.GetFD()] = this;
}
}
*/
return;
}
- log(DEBUG,"DNS: Received an event for an invalid descriptor!");
+ /* This FD doesnt belong here, lets be rid of it,
+ * just to be safe so we dont get any more events
+ * about it.
+ */
+ SE->DelFd(fdcheck);
}