~vcs-imports-ii/znc/master

« back to all changes in this revision

Viewing changes to Chan.cpp

  • Committer: Uli Schlachter
  • Date: 2011-09-12 15:26:32 UTC
  • Revision ID: git-v1:9e3019db72c1d49727766ff2b252acf3a3ec4c53
Remove MODULECALL macro

Depending on which of its arguments where NULL, that macro called network / user
modules or not. While this is nice in that it avoids crashes, this behavior
actually surprised me and I'd rather have the caller explicitly say what it
wanted to do.

This macro is replaced with explicit calls to {GLOBAL,USER,NETWORKMODULECALL}.

Since there are actually module calls which do provide a CClient*, but may
happen before login (OnUnknownUserRaw() and the 3 CAP hooks), those are changed
to get the client pointer as their first argument. This should make it more
obvious that these module calls are special.

This commit should make it easier to catch bugs like the recent
OnClientDisconnected() with m_pUser == NULL.

Signed-off-by: Uli Schlachter <psychon@znc.in>

Show diffs side-by-side

added added

removed removed

Lines of Context:
251
251
        }
252
252
 
253
253
        if (pOpNick) {
254
 
                MODULECALL(OnRawMode(*pOpNick, *this, sModeArg, sArgs), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING);
 
254
                NETWORKMODULECALL(OnRawMode(*pOpNick, *this, sModeArg, sArgs), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING);
255
255
        }
256
256
 
257
257
        for (unsigned int a = 0; a < sModeArg.size(); a++) {
284
284
                                        bool bNoChange = (pNick->HasPerm(uPerm) == bAdd);
285
285
 
286
286
                                        if (uMode && pOpNick) {
287
 
                                                MODULECALL(OnChanPermission(*pOpNick, *pNick, *this, uMode, bAdd, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING);
 
287
                                                NETWORKMODULECALL(OnChanPermission(*pOpNick, *pNick, *this, uMode, bAdd, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING);
288
288
 
289
289
                                                if (uMode == CChan::M_Op) {
290
290
                                                        if (bAdd) {
291
 
                                                                MODULECALL(OnOp(*pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING);
 
291
                                                                NETWORKMODULECALL(OnOp(*pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING);
292
292
                                                        } else {
293
 
                                                                MODULECALL(OnDeop(*pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING);
 
293
                                                                NETWORKMODULECALL(OnDeop(*pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING);
294
294
                                                        }
295
295
                                                } else if (uMode == CChan::M_Voice) {
296
296
                                                        if (bAdd) {
297
 
                                                                MODULECALL(OnVoice(*pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING);
 
297
                                                                NETWORKMODULECALL(OnVoice(*pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING);
298
298
                                                        } else {
299
 
                                                                MODULECALL(OnDevoice(*pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING);
 
299
                                                                NETWORKMODULECALL(OnDevoice(*pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING);
300
300
                                                        }
301
301
                                                }
302
302
                                        }
332
332
                        } else {
333
333
                                bNoChange = !HasMode(uMode);
334
334
                        }
335
 
                        MODULECALL(OnMode(*pOpNick, *this, uMode, sArg, bAdd, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING);
 
335
                        NETWORKMODULECALL(OnMode(*pOpNick, *this, uMode, sArg, bAdd, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING);
336
336
 
337
337
                        if (!bList) {
338
338
                                (bAdd) ? AddMode(uMode, sArg) : RemMode(uMode);
545
545
 
546
546
                if (vsBuffer.size()) {
547
547
                        bool bSkipStatusMsg = false;
548
 
                        MODULECALL(OnChanBufferStarting(*this, *pClient), m_pNetwork->GetUser(), m_pNetwork, NULL, bSkipStatusMsg = true);
 
548
                        NETWORKMODULECALL(OnChanBufferStarting(*this, *pClient), m_pNetwork->GetUser(), m_pNetwork, NULL, bSkipStatusMsg = true);
549
549
 
550
550
                        if (!bSkipStatusMsg) {
551
551
                                m_pNetwork->PutUser(":***!znc@znc.in PRIVMSG " + GetName() + " :Buffer Playback...", pClient);
553
553
 
554
554
                        for (unsigned int a = 0; a < vsBuffer.size(); a++) {
555
555
                                CString sLine(vsBuffer[a]);
556
 
                                MODULECALL(OnChanBufferPlayLine(*this, *pClient, sLine), m_pNetwork->GetUser(), m_pNetwork, NULL, continue);
 
556
                                NETWORKMODULECALL(OnChanBufferPlayLine(*this, *pClient, sLine), m_pNetwork->GetUser(), m_pNetwork, NULL, continue);
557
557
                                m_pNetwork->PutUser(sLine, pClient);
558
558
                        }
559
559
 
562
562
                        }
563
563
 
564
564
                        bSkipStatusMsg = false;
565
 
                        MODULECALL(OnChanBufferEnding(*this, *pClient), m_pNetwork->GetUser(), m_pNetwork, NULL, bSkipStatusMsg = true);
 
565
                        NETWORKMODULECALL(OnChanBufferEnding(*this, *pClient), m_pNetwork->GetUser(), m_pNetwork, NULL, bSkipStatusMsg = true);
566
566
 
567
567
                        if (!bSkipStatusMsg) {
568
568
                                m_pNetwork->PutUser(":***!znc@znc.in PRIVMSG " + GetName() + " :Playback Complete.", pClient);