From 0f1f0c5a221d199fefc38e116a98fb4ff2c0a4f3 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Tue, 14 Nov 2023 13:50:52 +0000 Subject: [PATCH] Deduplicate account sending code in the inspircd module. --- modules/protocol/inspircd.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/modules/protocol/inspircd.cpp b/modules/protocol/inspircd.cpp index d3628fb8f..e76d745e3 100644 --- a/modules/protocol/inspircd.cpp +++ b/modules/protocol/inspircd.cpp @@ -55,6 +55,12 @@ class InspIRCdProto : public IRCDProto UplinkSocket::Message(Me) << "DELLINE " << xtype << " " << mask; } + void SendAccount(const Anope::string &uid, NickAlias *na) + { + UplinkSocket::Message(Me) << "METADATA " << uid << " accountid :" << (na ? na->nc->GetId() : Anope::string()); + UplinkSocket::Message(Me) << "METADATA " << uid << " accountname :" << (na ? na->nc->display : Anope::string()); + } + public: PrimitiveExtensibleItem maxlist; @@ -432,17 +438,13 @@ class InspIRCdProto : public IRCDProto void SendLogin(User *u, NickAlias *na) override { /* InspIRCd uses an account to bypass chmode +R, not umode +r, so we can't send this here */ - if (na->nc->HasExt("UNCONFIRMED")) - return; - - UplinkSocket::Message(Me) << "METADATA " << u->GetUID() << " accountid :" << na->nc->GetId(); - UplinkSocket::Message(Me) << "METADATA " << u->GetUID() << " accountname :" << na->nc->display; + if (!na->nc->HasExt("UNCONFIRMED")) + SendAccount(u->GetUID(), na); } void SendLogout(User *u) override { - UplinkSocket::Message(Me) << "METADATA " << u->GetUID() << " accountid :"; - UplinkSocket::Message(Me) << "METADATA " << u->GetUID() << " accountname :"; + SendAccount(u->GetUID(), nullptr); } void SendChannel(Channel *c) override @@ -457,8 +459,7 @@ class InspIRCdProto : public IRCDProto void SendSVSLogin(const Anope::string &uid, NickAlias *na) override { - UplinkSocket::Message(Me) << "METADATA " << uid << " accountid :" << na->nc->GetId(); - UplinkSocket::Message(Me) << "METADATA " << uid << " accountname :" << na->nc->display; + SendAccount(uid, na); if (!na->GetVhostIdent().empty()) UplinkSocket::Message(Me) << "ENCAP " << uid.substr(0, 3) << " CHGIDENT " << uid << " " << na->GetVhostIdent();