diff options
-rw-r--r-- | modules/database/db_flatfile.cpp | 4 | ||||
-rw-r--r-- | modules/pseudoclients/nickserv.cpp | 16 | ||||
-rw-r--r-- | src/modulemanager.cpp | 16 | ||||
-rw-r--r-- | src/protocol.cpp | 2 | ||||
-rw-r--r-- | src/win32/dl/dl.cpp | 3 |
5 files changed, 23 insertions, 18 deletions
diff --git a/modules/database/db_flatfile.cpp b/modules/database/db_flatfile.cpp index 694ff69a4..aa8f427ad 100644 --- a/modules/database/db_flatfile.cpp +++ b/modules/database/db_flatfile.cpp @@ -123,7 +123,7 @@ class DBFlatFile : public Module, public Pipe const std::vector<Anope::string> &type_order = Serialize::Type::GetTypeOrder(); std::set<Anope::string> dbs; - dbs.insert(Config->GetModule(this)->Get<const Anope::string>("database")); + dbs.insert(Config->GetModule(this)->Get<const Anope::string>("database", "anope.db")); for (unsigned i = 0; i < type_order.size(); ++i) { @@ -337,7 +337,7 @@ class DBFlatFile : public Module, public Pipe for (std::map<Module *, std::fstream *>::iterator it = databases.begin(), it_end = databases.end(); it != it_end; ++it) { std::fstream *f = it->second; - const Anope::string &db_name = Anope::DataDir + "/" + (it->first ? (it->first->name + ".db") : Config->GetModule(this)->Get<const Anope::string>("database")); + const Anope::string &db_name = Anope::DataDir + "/" + (it->first ? (it->first->name + ".db") : Config->GetModule(this)->Get<const Anope::string>("database", "anope.db")); if (!f->is_open() || !f->good()) { diff --git a/modules/pseudoclients/nickserv.cpp b/modules/pseudoclients/nickserv.cpp index e5ae04091..25c29a52f 100644 --- a/modules/pseudoclients/nickserv.cpp +++ b/modules/pseudoclients/nickserv.cpp @@ -21,7 +21,7 @@ class NickServCollide : public Timer Reference<NickAlias> na; public: - NickServCollide(NickServService *nss, User *user, NickAlias *nick, time_t delay) : Timer(delay), service(nss), u(user), ts(user->timestamp), na(nick) + NickServCollide(Module *me, NickServService *nss, User *user, NickAlias *nick, time_t delay) : Timer(me, delay), service(nss), u(user), ts(user->timestamp), na(nick) { } @@ -44,7 +44,7 @@ class NickServHeld : public Timer Reference<NickAlias> na; Anope::string nick; public: - NickServHeld(NickAlias *n, long l) : Timer(l), na(n), nick(na->nick) + NickServHeld(Module *me, NickAlias *n, long l) : Timer(me, l), na(n), nick(na->nick) { n->Extend<bool>("HELD"); } @@ -66,8 +66,8 @@ class NickServRelease : public User, public Timer Anope::string nick; public: - NickServRelease(NickAlias *na, time_t delay) : User(na->nick, Config->GetModule("nickserv")->Get<const Anope::string>("enforceruser", "user"), - Config->GetModule("nickserv")->Get<const Anope::string>("enforcerhost", "services.localhost.net"), "", "", Me, "Services Enforcer", Anope::CurTime, "", IRCD->UID_Retrieve(), NULL), Timer(delay), nick(na->nick) + NickServRelease(Module *me, NickAlias *na, time_t delay) : User(na->nick, Config->GetModule("nickserv")->Get<const Anope::string>("enforceruser", "user"), + Config->GetModule("nickserv")->Get<const Anope::string>("enforcerhost", "services.localhost.net"), "", "", Me, "Services Enforcer", Anope::CurTime, "", IRCD->UID_Retrieve(), NULL), Timer(me, delay), nick(na->nick) { /* Erase the current release timer and use the new one */ Anope::map<NickServRelease *>::iterator nit = NickServReleases.find(this->nick); @@ -103,12 +103,12 @@ class NickServCore : public Module, public NickServService { collided.Unset(na); - new NickServHeld(na, Config->GetModule("nickserv")->Get<time_t>("releasetimeout", "1m")); + new NickServHeld(this, na, Config->GetModule("nickserv")->Get<time_t>("releasetimeout", "1m")); if (IRCD->CanSVSHold) IRCD->SendSVSHold(na->nick, Config->GetModule("nickserv")->Get<time_t>("releasetimeout", "1m")); else - new NickServRelease(na, Config->GetModule("nickserv")->Get<time_t>("releasetimeout", "1m")); + new NickServRelease(this, na, Config->GetModule("nickserv")->Get<time_t>("releasetimeout", "1m")); } } @@ -184,13 +184,13 @@ class NickServCore : public Module, public NickServService { time_t killquick = Config->GetModule("nickserv")->Get<time_t>("killquick", "20s"); u->SendMessage(NickServ, _("If you do not change within %s, I will change your nick."), Anope::Duration(killquick, u->Account()).c_str()); - new NickServCollide(this, u, na, killquick); + new NickServCollide(this, this, u, na, killquick); } else { time_t kill = Config->GetModule("nickserv")->Get<time_t>("kill", "60s"); u->SendMessage(NickServ, _("If you do not change within %s, I will change your nick."), Anope::Duration(kill, u->Account()).c_str()); - new NickServCollide(this, u, na, kill); + new NickServCollide(this, this, u, na, kill); } } diff --git a/src/modulemanager.cpp b/src/modulemanager.cpp index 07ac46ee1..2832a562a 100644 --- a/src/modulemanager.cpp +++ b/src/modulemanager.cpp @@ -159,25 +159,25 @@ ModuleReturn ModuleManager::LoadModule(const Anope::string &modname, User *u) dlerror(); void *handle = dlopen(pbuf.c_str(), RTLD_NOW); const char *err = dlerror(); - if (!handle && err && *err) + if (!handle) { - Log() << err; + if (err && *err) + Log() << err; return MOD_ERR_NOLOAD; } dlerror(); Module *(*func)(const Anope::string &, const Anope::string &) = function_cast<Module *(*)(const Anope::string &, const Anope::string &)>(dlsym(handle, "AnopeInit")); err = dlerror(); - if (!func && err && *err) + if (!func) { Log() << "No init function found, not an Anope module"; + if (err && *err) + Log(LOG_DEBUG) << err; dlclose(handle); return MOD_ERR_NOLOAD; } - - if (!func) - throw CoreException("Couldn't find constructor, yet moderror wasn't set?"); - + /* Create module. */ Anope::string nick; if (u) @@ -192,6 +192,8 @@ ModuleReturn ModuleManager::LoadModule(const Anope::string &modname, User *u) catch (const ModuleException &ex) { Log() << "Error while loading " << modname << ": " << ex.GetReason(); + /*if (dlclose(handle)) + Log() << dlerror();*/ return MOD_ERR_EXCEPTION; } diff --git a/src/protocol.cpp b/src/protocol.cpp index 17b43e292..692ce005a 100644 --- a/src/protocol.cpp +++ b/src/protocol.cpp @@ -436,6 +436,8 @@ unsigned IRCDProto::GetMaxListFor(Channel *c) Anope::string IRCDProto::NormalizeMask(const Anope::string &mask) { + if (IsExtbanValid(mask)) + return mask; return Entry("", mask).GetNUHMask(); } diff --git a/src/win32/dl/dl.cpp b/src/win32/dl/dl.cpp index b7ffddaa3..5b19d7441 100644 --- a/src/win32/dl/dl.cpp +++ b/src/win32/dl/dl.cpp @@ -15,7 +15,8 @@ void *dlopen(const char *filename, int) char *dlerror(void) { - static Anope::string err = Anope::LastError(); + static Anope::string err; + err = Anope::LastError(); SetLastError(0); return err.empty() ? NULL : const_cast<char *>(err.c_str()); } |