From 4fbd6681fedbff9b4cb04cc774f785cbe8b5c35b Mon Sep 17 00:00:00 2001 From: linuxdaemon Date: Tue, 18 Dec 2018 19:06:56 -0600 Subject: Make more modules rehash atomically (#1535) Have each module validate the values it loads before setting them, so any errors don't result in partial application of the configs --- src/modules/m_chanlog.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src/modules/m_chanlog.cpp') diff --git a/src/modules/m_chanlog.cpp b/src/modules/m_chanlog.cpp index 85e7ca2eb..afe213f61 100644 --- a/src/modules/m_chanlog.cpp +++ b/src/modules/m_chanlog.cpp @@ -33,8 +33,7 @@ class ModuleChanLog : public Module { std::string snomasks; std::string channel; - - logstreams.clear(); + ChanLogTargets newlogs; ConfigTagList tags = ServerInstance->Config->ConfTags("chanlog"); for (ConfigIter i = tags.first; i != tags.second; ++i) @@ -44,16 +43,16 @@ class ModuleChanLog : public Module if (channel.empty() || snomasks.empty()) { - ServerInstance->Logs->Log(MODNAME, LOG_DEFAULT, "Malformed chanlog tag, ignoring"); - continue; + throw ModuleException("Malformed chanlog tag at " + i->second->getTagLocation()); } for (std::string::const_iterator it = snomasks.begin(); it != snomasks.end(); it++) { - logstreams.insert(std::make_pair(*it, channel)); + newlogs.insert(std::make_pair(*it, channel)); ServerInstance->Logs->Log(MODNAME, LOG_DEFAULT, "Logging %c to %s", *it, channel.c_str()); } } + logstreams.swap(newlogs); } -- cgit v1.3.1-10-gc9f91