#include "inspstring.h"
#include "connection.h"
#include "hashcomp.h"
+#include "dns.h"
#include "cull_list.h"
enum ChanStatus {
irc::string channel;
};
+class UserResolver : public Resolver
+{
+ private:
+ userrec* bound_user;
+ int bound_fd;
+ public:
+ UserResolver(userrec* user, std::string to_resolve, bool forward) : Resolver(to_resolve, forward), bound_user(user)
+ {
+ this->bound_fd = user->fd;
+ }
+
+ void OnLookupComplete(const std::string &result);
+ void OnError(ResolverError e);
+};
+
/** Holds information relevent to <connect allow> and <connect deny> tags in the config file.
*/
*/
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.
/** IPV4 ip address
*/
- in_addr ip4;
+ insp_inaddr ip4;
/* Write error string
*/
void kill_link_silent(userrec *user,const char* r);
void AddWhoWas(userrec* u);
void MaintainWhoWas(time_t TIME);
-void AddClient(int socket, int port, bool iscached, in_addr ip4);
+void AddClient(int socket, int port, bool iscached, insp_inaddr ip4);
void FullConnectUser(userrec* user, CullList* Goners);
userrec* ReHashNick(const char* Old, const char* New);
void force_nickchange(userrec* user,const char* newnick);