keepnick: Modernize and update test.

This commit is contained in:
RealKindOne authored and Alexey Sokolov committed 2026-09-13 11:27:31 +01:00
1 parent cec9741003
commit ec49f11be6
2 files changed
+31 -4

No files matched your search

+6 -4
View File
@@ -80,8 +80,9 @@ class CKeepNickMod : public CModule {
return sConfNick;
}
void OnNick(const CNick& Nick, const CString& sNewNick,
const vector<CChan*>& vChans) override {
void OnNickMessage(CNickMessage& Message, const vector<CChan*>& vChans) override {
const CNick& Nick = Message.GetNick();
const CString& sNewNick = Message.GetNewNick();
if (sNewNick == GetNetwork()->GetIRCSock()->GetNick()) {
// We are changing our own nick
if (Nick.NickEquals(GetNick())) {
@@ -103,14 +104,15 @@ class CKeepNickMod : public CModule {
}
}
void OnQuit(const CNick& Nick, const CString& sMessage,
const vector<CChan*>& vChans) override {
void OnQuitMessage(CQuitMessage& Message, const vector<CChan*>& vChans) override {
// If someone with the nick we want quits, be fast and get the nick
const CNick& Nick = Message.GetNick();
if (Nick.NickEquals(GetNick())) {
KeepNick();
}
}
void OnIRCDisconnected() override {
// No way we can do something if we aren't connected to IRC.
Disable();
+25
View File
@@ -336,6 +336,31 @@ TEST_F(ZNCTest, KeepNickModule) {
client.ReadUntil(
":*keepnick!keepnick@znc.in PRIVMSG user_ "
":Unable to obtain nick user: Nope :-P, #error");
client.Write("PRIVMSG *keepnick :state");
client.ReadUntil("Currently disabled");
client.Write("NICK user_");
ircd.ReadUntil("NICK user_");
client.Write("JOIN #test");
ircd.ReadUntil("JOIN #test");
ircd.Write(":server 353 nick = #test :user_ user");
ircd.Write(":server 366 nick #test :End of /NAMES list");
client.Write("PRIVMSG *keepnick :enable");
client.ReadUntil("Trying to get");
// OnQuitMessage
ircd.Write(":user QUIT :Leaving");
ircd.ReadUntil("NICK user");
// OnNickMessage
client.Write("NICK test");
ircd.ReadUntil("NICK test");
ircd.Write(":user!ident@host JOIN #test");
client.ReadUntil("JOIN");
ircd.Write(":user!ident@host NICK user2");
ircd.ReadUntil("NICK user");
}
TEST_F(ZNCTest, ModuleCSRFOverride) {