#define __USERS_H__
#include <string>
-
-#ifdef THREADED_DNS
-#include <pthread.h>
-#endif
-
#include "inspircd_config.h"
#include "socket.h"
#include "channels.h"
#include "inspstring.h"
#include "connection.h"
#include "hashcomp.h"
+#include "dns.h"
#include "cull_list.h"
enum ChanStatus {
};
+
+/** Derived from Resolver, and performs user forward/reverse lookups.
+ */
+class UserResolver : public Resolver
+{
+ private:
+ /** User this class is 'attached' to.
+ */
+ userrec* bound_user;
+ int bound_fd;
+ public:
+ UserResolver(userrec* user, std::string to_resolve, bool forward);
+
+ void OnLookupComplete(const std::string &result);
+ void OnError(ResolverError e);
+};
+
+
/** Holds information relevent to <connect allow> and <connect deny> tags in the config file.
*/
class ConnectClass : public classbase
*/
InvitedList invites;
public:
+ /** Resolvers for looking up this users hostname
+ */
+ UserResolver* res_forward;
+ UserResolver* res_reverse;
+ std::string stored_host;
+
+ void StartDNSLookup();
/** The users nickname.
* An invalid nickname indicates an unregistered connection prior to the NICK command.
/** Default destructor
*/
virtual ~userrec();
-
-#ifdef THREADED_DNS
- /** Thread used for threaded lookups
- */
- pthread_t dnsthread;
-#endif
};
/** Used to hold WHOWAS information