summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/core/ms_read.cpp12
-rw-r--r--modules/extra/db_mysql.cpp14
-rw-r--r--modules/extra/hs_request.cpp1
-rw-r--r--modules/socketengines/m_socketengine_poll.cpp8
-rw-r--r--modules/socketengines/m_socketengine_select.cpp5
-rw-r--r--src/base.cpp2
-rw-r--r--src/hashcomp.cpp2
7 files changed, 32 insertions, 12 deletions
diff --git a/modules/core/ms_read.cpp b/modules/core/ms_read.cpp
index 31f701c7e..db26fd689 100644
--- a/modules/core/ms_read.cpp
+++ b/modules/core/ms_read.cpp
@@ -49,7 +49,7 @@ class MemoListCallback : public NumberList
class CommandMSRead : public Command
{
public:
- CommandMSRead() : Command("READ", 0, 2)
+ CommandMSRead() : Command("READ", 1, 2)
{
}
@@ -59,8 +59,7 @@ class CommandMSRead : public Command
MemoInfo *mi;
ChannelInfo *ci = NULL;
- Anope::string numstr = !params.empty() ? params[0] : "", chan;
- int num;
+ Anope::string numstr = params[0], chan;
if (!numstr.empty() && numstr[0] == '#')
{
@@ -81,8 +80,8 @@ class CommandMSRead : public Command
}
else
mi = &u->Account()->memos;
- num = !numstr.empty() && numstr.is_number_only() ? convertTo<int>(numstr) : -1;
- if (numstr.empty() || (!numstr.equals_ci("LAST") && !numstr.equals_ci("NEW") && num <= 0))
+
+ if (numstr.empty() || (!numstr.equals_ci("LAST") && !numstr.equals_ci("NEW") && !numstr.is_number_only()))
this->OnSyntaxError(source, numstr);
else if (mi->memos.empty())
{
@@ -91,7 +90,8 @@ class CommandMSRead : public Command
else
source.Reply(MEMO_HAVE_NO_MEMOS);
}
- else {
+ else
+ {
int i, end;
if (numstr.equals_ci("NEW"))
diff --git a/modules/extra/db_mysql.cpp b/modules/extra/db_mysql.cpp
index 3cc0ceacb..d11d7b914 100644
--- a/modules/extra/db_mysql.cpp
+++ b/modules/extra/db_mysql.cpp
@@ -906,6 +906,18 @@ class DBMySQL : public Module
}
}
+ r = SQL->RunQuery("SELECT * FROM `anope_os_exceptions`");
+ for (int i = 0; i < r.Rows(); ++i)
+ {
+ Anope::string mask = r.Get(i, "mask");
+ unsigned limit = convertTo<unsigned>(r.Get(i, "slimit"));
+ Anope::string creator = r.Get(i, "who");
+ Anope::string reason = r.Get(i, "reason");
+ time_t expires = convertTo<time_t>(r.Get(i, "expires"));
+
+ exception_add(NULL, mask, limit, reason, creator, expires);
+ }
+
r = SQL->RunQuery("SELECT * FROM `anope_extra`");
for (int i = 0; i < r.Rows(); ++i)
{
@@ -1371,7 +1383,7 @@ class DBMySQL : public Module
this->Escape(m->sender) + "', '" + this->Escape(m->text) + "', 'CHAN')");
}
- void OnMemoDel(NickCore *nc, MemoInfo *mi, Memo *m)
+ void OnMemoDel(const NickCore *nc, MemoInfo *mi, Memo *m)
{
if (m)
this->RunQuery("DELETE FROM `anope_ms_info` WHERE `receiver` = '" + this->Escape(nc->display) + "' AND `time` = " + stringify(m->time));
diff --git a/modules/extra/hs_request.cpp b/modules/extra/hs_request.cpp
index fbba8bb02..c3661f2fd 100644
--- a/modules/extra/hs_request.cpp
+++ b/modules/extra/hs_request.cpp
@@ -153,6 +153,7 @@ class CommandHSActivate : public Command
if (it != Requests.end())
{
na->hostinfo.SetVhost(it->second->ident, it->second->host, u->nick, it->second->time);
+ FOREACH_MOD(I_OnSetVhost, OnSetVhost(na));
if (HSRequestMemoUser)
memo_send(source, na->nick, _("[auto memo] Your requested vHost has been approved."), 2);
diff --git a/modules/socketengines/m_socketengine_poll.cpp b/modules/socketengines/m_socketengine_poll.cpp
index 044a79c4f..5b44f8674 100644
--- a/modules/socketengines/m_socketengine_poll.cpp
+++ b/modules/socketengines/m_socketengine_poll.cpp
@@ -72,7 +72,7 @@ class SocketEnginePoll : public SocketEngineBase
return;
}
- if (pos->second != SocketCount)
+ if (pos->second != SocketCount - 1)
{
pollfd *ev = &this->events[pos->second],
*last_ev = &this->events[SocketCount - 1];
@@ -137,9 +137,13 @@ class SocketEnginePoll : public SocketEngineBase
return;
}
- for (int i = 0; i < total; ++i)
+ for (int i = 0, processed = 0; i < SocketCount && processed != total; ++i)
{
pollfd *ev = &this->events[i];
+
+ if (ev->revents != 0)
+ ++processed;
+
Socket *s = Sockets[ev->fd];
if (s->HasFlag(SF_DEAD))
diff --git a/modules/socketengines/m_socketengine_select.cpp b/modules/socketengines/m_socketengine_select.cpp
index b1c1c065f..3ea9eab27 100644
--- a/modules/socketengines/m_socketengine_select.cpp
+++ b/modules/socketengines/m_socketengine_select.cpp
@@ -73,10 +73,13 @@ class SocketEngineSelect : public SocketEngineBase
}
else if (sresult)
{
- for (std::map<int, Socket *>::const_iterator it = Sockets.begin(), it_end = Sockets.end(); it != it_end; ++it)
+ int processed = 0;
+ for (std::map<int, Socket *>::const_iterator it = Sockets.begin(), it_end = Sockets.end(); it != it_end && processed != sresult; ++it)
{
Socket *s = it->second;
+ if (FD_ISSET(s->GetFD(), &efdset) || FD_ISSET(s->GetFD(), &rfdset) || FD_ISSET(s->GetFD(), &wfdset))
+ ++processed;
if (s->HasFlag(SF_DEAD))
continue;
if (FD_ISSET(s->GetFD(), &efdset))
diff --git a/src/base.cpp b/src/base.cpp
index 6977f81c5..d0eff0beb 100644
--- a/src/base.cpp
+++ b/src/base.cpp
@@ -1,4 +1,4 @@
-#include "anope.h"
+#include "services.h"
Base::Base()
{
diff --git a/src/hashcomp.cpp b/src/hashcomp.cpp
index d50fca3c0..a7bca3060 100644
--- a/src/hashcomp.cpp
+++ b/src/hashcomp.cpp
@@ -8,7 +8,7 @@
* for use in Anope.
*/
-#include "anope.h"
+#include "services.h"
/*
*