mirror of
https://github.com/anope/anope.git
synced 2026-07-01 14:06:39 +02:00
Avoid NickAlias lookups by storing a pointer in the NickCore.
This commit is contained in:
+3
-1
@@ -145,6 +145,8 @@ public:
|
||||
|
||||
/* Unsaved data */
|
||||
|
||||
/** The display nick for this account. */
|
||||
NickAlias *na = nullptr;
|
||||
/* Number of channels registered by this account */
|
||||
uint16_t channelcount = 0;
|
||||
/* Users online now logged into this account */
|
||||
@@ -163,7 +165,7 @@ public:
|
||||
/** Changes the display for this account
|
||||
* @param na The new display, must be grouped to this account.
|
||||
*/
|
||||
void SetDisplay(const NickAlias *na);
|
||||
void SetDisplay(NickAlias *na);
|
||||
|
||||
/** Checks whether this account is a services oper or not.
|
||||
* @return True if this account is a services oper, false otherwise.
|
||||
|
||||
@@ -215,6 +215,11 @@ public:
|
||||
*/
|
||||
NickCore *Account() const;
|
||||
|
||||
/** Get the account nick the user is logged in using
|
||||
* @return The account nick or NULL
|
||||
*/
|
||||
NickAlias *AccountNick() const;
|
||||
|
||||
/** Check if the user is identified for their nick
|
||||
* @param check_nick True to check if the user is identified to the nickname they are on too
|
||||
* @return true or false
|
||||
|
||||
@@ -43,7 +43,7 @@ public:
|
||||
|
||||
const NickAlias *na = NickAlias::Find(u->nick);
|
||||
if (!na || na->nc != u->Account() || !na->HasVHost())
|
||||
na = NickAlias::Find(u->Account()->display);
|
||||
na = u->AccountNick();
|
||||
if (!na || !na->HasVHost())
|
||||
return;
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ public:
|
||||
|
||||
const NickAlias *na = NickAlias::Find(u->nick);
|
||||
if (!na || na->nc != u->Account() || !na->HasVHost())
|
||||
na = NickAlias::Find(u->Account()->display);
|
||||
na = u->AccountNick();
|
||||
|
||||
if (!na || !na->HasVHost())
|
||||
source.Reply(HOST_NOT_ASSIGNED);
|
||||
|
||||
@@ -29,7 +29,7 @@ public:
|
||||
User *u = source.GetUser();
|
||||
const NickAlias *na = NickAlias::Find(u->nick);
|
||||
if (!na || na->nc != u->Account() || !na->HasVHost())
|
||||
na = NickAlias::Find(u->Account()->display);
|
||||
na = u->AccountNick();
|
||||
if (na && u->Account() == na->nc && na->HasVHost())
|
||||
{
|
||||
source.Reply(_("Your vhost of \002%s\002 is now activated."), na->GetVHostMask().c_str());
|
||||
|
||||
@@ -401,7 +401,7 @@ public:
|
||||
u->SendMessage(NickServ, _("All new accounts must be validated by an administrator. Please wait for your registration to be confirmed."));
|
||||
else
|
||||
u->SendMessage(NickServ, _("Your email address is not confirmed. To confirm it, follow the instructions that were emailed to you."));
|
||||
const NickAlias *this_na = NickAlias::Find(u->Account()->display);
|
||||
const NickAlias *this_na = u->AccountNick();
|
||||
time_t time_registered = Anope::CurTime - this_na->time_registered;
|
||||
time_t unconfirmed_expire = Config->GetModule(this)->Get<time_t>("unconfirmedexpire", "1d");
|
||||
if (unconfirmed_expire > time_registered)
|
||||
|
||||
+1
-1
@@ -302,7 +302,7 @@ public:
|
||||
// If the user is already introduced then we log them in now.
|
||||
// Otherwise, we send an SVSLOGIN to log them in later.
|
||||
User *user = User::Find(session->uid);
|
||||
NickAlias *na = nc ? NickAlias::Find(nc->display) : nullptr;
|
||||
NickAlias *na = nc ? nc->na : nullptr;
|
||||
if (user)
|
||||
{
|
||||
if (na)
|
||||
|
||||
@@ -31,6 +31,8 @@ NickAlias::NickAlias(const Anope::string &nickname, NickCore *nickcore)
|
||||
throw CoreException("Empty nickcore passed to NickAlias constructor");
|
||||
|
||||
nickcore->aliases->push_back(this);
|
||||
if (this->nick.equals_ci(nickcore->display))
|
||||
nickcore->na = this;
|
||||
|
||||
if (!NickAliasList->insert_or_assign(this->nick, this).second)
|
||||
Log(LOG_DEBUG) << "Duplicate nick " << this->nick << " in NickAlias table";
|
||||
|
||||
+2
-1
@@ -149,7 +149,7 @@ Serializable *NickCore::Unserialize(Serializable *obj, Serialize::Data &data)
|
||||
return nc;
|
||||
}
|
||||
|
||||
void NickCore::SetDisplay(const NickAlias *na)
|
||||
void NickCore::SetDisplay(NickAlias *na)
|
||||
{
|
||||
if (na->nc != this || na->nick == this->display)
|
||||
return;
|
||||
@@ -164,6 +164,7 @@ void NickCore::SetDisplay(const NickAlias *na)
|
||||
NickCoreList->erase(this->display);
|
||||
|
||||
this->display = na->nick;
|
||||
this->na = na;
|
||||
|
||||
(*NickCoreList)[this->display] = this;
|
||||
}
|
||||
|
||||
@@ -430,6 +430,11 @@ NickCore *User::Account() const
|
||||
return this->nc;
|
||||
}
|
||||
|
||||
NickAlias *User::AccountNick() const
|
||||
{
|
||||
return this->nc ? this->nc->na : nullptr;
|
||||
}
|
||||
|
||||
bool User::IsIdentified(bool check_nick) const
|
||||
{
|
||||
if (check_nick && this->nc)
|
||||
|
||||
Reference in New Issue
Block a user