]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_ircv3_batch.cpp
Fix the cloaking module on C++98 compilers.
[user/henk/code/inspircd.git] / src / modules / m_ircv3_batch.cpp
index df2b00f49fc0c0a16b8ba48141a3cdc56616dfa7..aa464f9fe3cfb07666d2ef7062406ca0a72158ce 100644 (file)
@@ -1,7 +1,8 @@
 /*
  * InspIRCd -- Internet Relay Chat Daemon
  *
- *   Copyright (C) 2016 Attila Molnar <attilamolnar@hush.com>
+ *   Copyright (C) 2018-2020 Sadie Powell <sadie@witchery.services>
+ *   Copyright (C) 2018 Attila Molnar <attilamolnar@hush.com>
  *
  * This file is part of InspIRCd.  InspIRCd is free software: you can
  * redistribute it and/or modify it under the terms of the GNU General Public
@@ -25,7 +26,7 @@ class BatchMessage : public ClientProtocol::Message
 {
  public:
        BatchMessage(const IRCv3::Batch::Batch& batch, bool start)
-               : ClientProtocol::Message("BATCH", ServerInstance->Config->ServerName)
+               : ClientProtocol::Message("BATCH", ServerInstance->Config->GetServerName())
        {
                char c = (start ? '+' : '-');
                PushParam(std::string(1, c) + batch.GetRefTagStr());
@@ -44,10 +45,14 @@ struct IRCv3::Batch::BatchInfo
        std::vector<LocalUser*> users;
        BatchMessage startmsg;
        ClientProtocol::Event startevent;
+       BatchMessage endmsg;
+       ClientProtocol::Event endevent;
 
        BatchInfo(ClientProtocol::EventProvider& protoevprov, IRCv3::Batch::Batch& b)
                : startmsg(b, true)
                , startevent(protoevprov, startmsg)
+               , endmsg(b, false)
+               , endevent(protoevprov, endmsg)
        {
        }
 };
@@ -151,6 +156,7 @@ class IRCv3::Batch::ManagerImpl : public Manager
                batch.manager = this;
                batch.batchinfo = new IRCv3::Batch::BatchInfo(protoevprov, batch);
                batch.batchstartmsg = &batch.batchinfo->startmsg;
+               batch.batchendmsg = &batch.batchinfo->endmsg;
                active_batches.push_back(&batch);
        }
 
@@ -164,12 +170,10 @@ class IRCv3::Batch::ManagerImpl : public Manager
 
                BatchInfo& batchinfo = *batch.batchinfo;
                // Send end batch message to all users who got the batch start message and unset bit so it can be reused
-               BatchMessage endbatchmsg(batch, false);
-               ClientProtocol::Event endbatchevent(protoevprov, endbatchmsg);
                for (std::vector<LocalUser*>::const_iterator i = batchinfo.users.begin(); i != batchinfo.users.end(); ++i)
                {
                        LocalUser* const user = *i;
-                       user->Send(endbatchevent);
+                       user->Send(batchinfo.endevent);
                        batchbits.set(user, batchbits.get(user) & ~batch.GetBit());
                }
 
@@ -209,7 +213,7 @@ class ModuleIRCv3Batch : public Module
 
        Version GetVersion() CXX11_OVERRIDE
        {
-               return Version("Provides the batch IRCv3 extension", VF_VENDOR);
+               return Version("Provides the IRCv3 batch client capability.", VF_VENDOR);
        }
 };