diff options
author | William Pitcock <nenolod@dereferenced.org> | 2012-06-11 22:06:36 -0500 |
---|---|---|
committer | Sir Poggles <sir.pogsalot@gmail.com> | 2012-06-12 22:49:29 -0700 |
commit | f0474272303ac9297f637ce956315518138bafff (patch) | |
tree | 8c79e5206ee53282b252ad876d66f4ab08fe49c5 | |
parent | 5db5dd923c6dc3f4c24b592148060b258b295cde (diff) |
users: add SetClientIP function for irc::sockets::sockaddrs type.
Code which touches client_sa should instead use this SetClientIP function so that hooks may
be called in the future.
-rw-r--r-- | include/users.h | 5 | ||||
-rw-r--r-- | src/users.cpp | 14 |
2 files changed, 18 insertions, 1 deletions
diff --git a/include/users.h b/include/users.h index 56297bed8..cdc0d8078 100644 --- a/include/users.h +++ b/include/users.h @@ -394,6 +394,11 @@ class CoreExport User : public Extensible */ bool SetClientIP(const char* sip); + /** Sets the client IP for this user + * @return true always + */ + bool SetClientIP(irc::sockets::sockaddrs *sa); + /** Constructor * @throw CoreException if the UID allocated to the user already exists */ diff --git a/src/users.cpp b/src/users.cpp index 2ee389c86..b05d24871 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -1008,10 +1008,22 @@ irc::sockets::cidr_mask User::GetCIDRMask() return irc::sockets::cidr_mask(client_sa, range); } +bool User::SetClientIP(irc::sockets::sockaddrs *sa) +{ + memcpy(&client_sa, sa, sizeof(irc::sockets::sockaddrs)); + + return true; +} + bool User::SetClientIP(const char* sip) { + irc::sockets::sockaddrs sa; + this->cachedip = ""; - return irc::sockets::aptosa(sip, 0, client_sa); + if (!irc::sockets::aptosa(sip, 0, sa)) + return false; + + return SetClientIP(&sa); } static std::string wide_newline("\r\n"); |