]> jfr.im git - irc/rizon/znc.git/commitdiff
Add OnUserTopicRequest() for topic requests
authorpsychon <redacted>
Tue, 2 Sep 2008 12:39:18 +0000 (12:39 +0000)
committerpsychon <redacted>
Tue, 2 Sep 2008 12:39:18 +0000 (12:39 +0000)
OnUserTopic() used to try to handle this, but it really failed to...

git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1185 726aef4b-f618-498e-8847-2d620e286838

Client.cpp
Modules.cpp
Modules.h

index 98f3ebc86e30f86f840b920d42c92204a979b2eb..db96ec0791f7a32fa7bb53b133648396a5a35c7c 100644 (file)
@@ -251,20 +251,14 @@ void CClient::ReadLine(const CString& sData) {
        } else if (sCommand.CaseCmp("TOPIC") == 0) {
                CString sChan = sLine.Token(1);
                CString sTopic = sLine.Token(2, true);
-               bool bUnset = false;
 
-               if (sTopic.Left(1) == ":") {
-                       sTopic.LeftChomp();
-                       if (sTopic.empty())
-                               bUnset = true;
-               }
-
-               MODULECALL(OnUserTopic(sChan, sTopic), m_pUser, this, return);
-
-               sLine = "TOPIC " + sChan;
-
-               if (!sTopic.empty() || bUnset) {
-                       sLine += " :" + sTopic;
+               if (!sTopic.empty()) {
+                       if (sTopic.Left(1) == ":")
+                               sTopic.LeftChomp();
+                       MODULECALL(OnUserTopic(sChan, sTopic), m_pUser, this, return);
+                       sLine = "TOPIC " + sChan + " :" + sTopic;
+               } else {
+                       MODULECALL(OnUserTopicRequest(sChan), m_pUser, this, return);
                }
        } else if (sCommand.CaseCmp("MODE") == 0) {
                CString sTarget = sLine.Token(1);
index beb5588c471f7a39d8d26741a86a848b083feeb9..c0b3c87da1e669716a40ddaadf652bc5d5524a84 100644 (file)
@@ -485,6 +485,7 @@ CModule::EModRet CModule::OnUserNotice(CString& sTarget, CString& sMessage) { re
 CModule::EModRet CModule::OnUserJoin(CString& sChannel, CString& sKey) { return CONTINUE; }
 CModule::EModRet CModule::OnUserPart(CString& sChannel, CString& sMessage) { return CONTINUE; }
 CModule::EModRet CModule::OnUserTopic(CString& sChannel, CString& sTopic) { return CONTINUE; }
+CModule::EModRet CModule::OnUserTopicRequest(CString& sChannel) { return CONTINUE; }
 
 CModule::EModRet CModule::OnCTCPReply(CNick& Nick, CString& sMessage) { return CONTINUE; }
 CModule::EModRet CModule::OnPrivCTCP(CNick& Nick, CString& sMessage) { return CONTINUE; }
@@ -595,6 +596,7 @@ bool CModules::OnUserNotice(CString& sTarget, CString& sMessage) { MODHALTCHK(On
 bool CModules::OnUserJoin(CString& sChannel, CString& sKey) { MODHALTCHK(OnUserJoin(sChannel, sKey)); }
 bool CModules::OnUserPart(CString& sChannel, CString& sMessage) { MODHALTCHK(OnUserPart(sChannel, sMessage)); }
 bool CModules::OnUserTopic(CString& sChannel, CString& sTopic) { MODHALTCHK(OnUserTopic(sChannel, sTopic)); }
+bool CModules::OnUserTopicRequest(CString& sChannel) { MODHALTCHK(OnUserTopicRequest(sChannel)); }
 
 bool CModules::OnQuit(const CNick& Nick, const CString& sMessage, const vector<CChan*>& vChans) { MODUNLOADCHK(OnQuit(Nick, sMessage, vChans)); return false; }
 bool CModules::OnNick(const CNick& Nick, const CString& sNewNick, const vector<CChan*>& vChans) { MODUNLOADCHK(OnNick(Nick, sNewNick, vChans)); return false; }
index 06f590edce47ecb46e682cf51388a0b3d6732f10..3a3106648e98e8db230c92b24275a5c4a8f4e590 100644 (file)
--- a/Modules.h
+++ b/Modules.h
@@ -264,6 +264,7 @@ public:
        virtual EModRet OnUserJoin(CString& sChannel, CString& sKey);
        virtual EModRet OnUserPart(CString& sChannel, CString& sMessage);
        virtual EModRet OnUserTopic(CString& sChannel, CString& sTopic);
+       virtual EModRet OnUserTopicRequest(CString& sChannel);
 
        virtual EModRet OnCTCPReply(CNick& Nick, CString& sMessage);
        virtual EModRet OnPrivCTCP(CNick& Nick, CString& sMessage);
@@ -403,6 +404,7 @@ public:
        virtual bool OnUserJoin(CString& sChannel, CString& sKey);
        virtual bool OnUserPart(CString& sChannel, CString& sMessage);
        virtual bool OnUserTopic(CString& sChannel, CString& sTopic);
+       virtual bool OnUserTopicRequest(CString& sChannel);
 
        virtual bool OnCTCPReply(CNick& Nick, CString& sMessage);
        virtual bool OnPrivCTCP(CNick& Nick, CString& sMessage);