summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/database/db_flatfile.cpp4
-rw-r--r--modules/pseudoclients/nickserv.cpp16
-rw-r--r--src/modulemanager.cpp16
-rw-r--r--src/protocol.cpp2
-rw-r--r--src/win32/dl/dl.cpp3
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());
}