diff options
-rw-r--r-- | include/fakeuser.h | 31 | ||||
-rw-r--r-- | include/inspircd.h | 3 | ||||
-rw-r--r-- | include/users.h | 4 | ||||
-rw-r--r-- | src/inspircd.cpp | 3 | ||||
-rw-r--r-- | src/users.cpp | 4 |
5 files changed, 38 insertions, 7 deletions
diff --git a/include/fakeuser.h b/include/fakeuser.h new file mode 100644 index 000000000..5d62b7060 --- /dev/null +++ b/include/fakeuser.h @@ -0,0 +1,31 @@ +/* +------------------------------------+ + * | Inspire Internet Relay Chat Daemon | + * +------------------------------------+ + * + * InspIRCd: (C) 2002-2009 InspIRCd Development Team + * See: http://wiki.inspircd.org/Credits + * + * This program is free but copyrighted software; see + * the file COPYING for details. + * + * --------------------------------------------------- + */ + +#ifndef __FAKEUSER_H__ +#define __FAKEUSER_H__ + +#include "users.h" + +class CoreExport FakeUser : public User +{ + public: + FakeUser(InspIRCd* Instance) : User(Instance, "!") + { + SetFd(FD_MAGIC_NUMBER); + } + + virtual const std::string GetFullHost() { return server; } + virtual const std::string GetFullRealHost() { return server; } +}; + +#endif diff --git a/include/inspircd.h b/include/inspircd.h index 0511058a4..6b13a5ed8 100644 --- a/include/inspircd.h +++ b/include/inspircd.h @@ -97,6 +97,7 @@ typedef std::multimap< std::string, KeyValList > ConfigDataHash; #include "inspstring.h" #include "protocol.h" #include "threadengine.h" +#include "fakeuser.h" #ifndef PATH_MAX #warning Potentially broken system, PATH_MAX undefined @@ -407,7 +408,7 @@ class CoreExport InspIRCd : public classbase * hash and set its descriptor to FD_MAGIC_NUMBER so the data * falls into the abyss :p */ - User* FakeClient; + FakeUser* FakeClient; /** Returns the next available UID for this server. */ diff --git a/include/users.h b/include/users.h index 4871ca411..207d782b0 100644 --- a/include/users.h +++ b/include/users.h @@ -679,7 +679,7 @@ class CoreExport User : public EventHandler * on the server, in nick!ident&at;host form. * @return The full masked host of the user */ - virtual const std::string& GetFullHost(); + virtual const std::string GetFullHost(); /** Returns the full real host of the user * This member function returns the hostname of the user as seen by other users @@ -687,7 +687,7 @@ class CoreExport User : public EventHandler * e.g. through a module, then this method will ignore it and return the true hostname. * @return The full real host of the user */ - virtual const std::string& GetFullRealHost(); + virtual const std::string GetFullRealHost(); /** This clears any cached results that are used for GetFullRealHost() etc. * The results of these calls are cached as generating them can be generally expensive. diff --git a/src/inspircd.cpp b/src/inspircd.cpp index f3662cb31..b8eced5f4 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -609,8 +609,7 @@ InspIRCd::InspIRCd(int argc, char** argv) } /* set up fake client again this time with the correct uid */ - this->FakeClient = new User(this, "#INVALID"); - this->FakeClient->SetFd(FD_MAGIC_NUMBER); + this->FakeClient = new FakeUser(this); // Get XLine to do it's thing. this->XLines->CheckELines(); diff --git a/src/users.cpp b/src/users.cpp index 15e1ab72b..9574dd415 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -330,7 +330,7 @@ void User::CloseSocket() } } -const std::string& User::GetFullHost() +const std::string User::GetFullHost() { if (!this->cached_fullhost.empty()) return this->cached_fullhost; @@ -379,7 +379,7 @@ int User::ReadData(void* buffer, size_t size) } -const std::string& User::GetFullRealHost() +const std::string User::GetFullRealHost() { if (!this->cached_fullrealhost.empty()) return this->cached_fullrealhost; |