summaryrefslogtreecommitdiff
path: root/modules/socketengines/m_socketengine_epoll.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2010-09-09 23:43:11 -0400
committerAdam <Adam@anope.org>2010-09-09 23:43:11 -0400
commit46813ccb8c6ab572b8a9ff0a39afb1d92dc4482b (patch)
tree562da502a102230ce207bbe921fdc978ee71e20c /modules/socketengines/m_socketengine_epoll.cpp
parentfdd196e50b4616ac377bd0ee0ae5ce6c57b657ee (diff)
Added an asynchronous DNS system and m_dnsbl, which checks clients against DNS blacklists.
Rewrote internal handling of IPs, we now properly support users using IPv6. Fixed a few problems with the UnrealIRCd protocol module.
Diffstat (limited to 'modules/socketengines/m_socketengine_epoll.cpp')
-rw-r--r--modules/socketengines/m_socketengine_epoll.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/modules/socketengines/m_socketengine_epoll.cpp b/modules/socketengines/m_socketengine_epoll.cpp
index 5a2561b25..5edc40502 100644
--- a/modules/socketengines/m_socketengine_epoll.cpp
+++ b/modules/socketengines/m_socketengine_epoll.cpp
@@ -80,8 +80,11 @@ class SocketEngineEPoll : public SocketEngineBase
--SocketCount;
}
- void MarkWriteable(Socket *s)
+ void MarkWritable(Socket *s)
{
+ if (s->HasFlag(SF_WRITABLE))
+ return;
+
epoll_event ev;
memset(&ev, 0, sizeof(ev));
@@ -91,10 +94,15 @@ class SocketEngineEPoll : public SocketEngineBase
if (epoll_ctl(EngineHandle, EPOLL_CTL_MOD, ev.data.fd, &ev) == -1)
Log() << "Unable to mark fd " << ev.data.fd << " as writable in socketengine epoll: " << strerror(errno);
+ else
+ s->SetFlag(SF_WRITABLE);
}
- void ClearWriteable(Socket *s)
+ void ClearWriteble(Socket *s)
{
+ if (!s->HasFlag(SF_WRITABLE))
+ return;
+
epoll_event ev;
memset(&ev, 0, sizeof(ev));
@@ -104,6 +112,8 @@ class SocketEngineEPoll : public SocketEngineBase
if (epoll_ctl(EngineHandle, EPOLL_CTL_MOD, ev.data.fd, &ev) == -1)
Log() << "Unable to mark fd " << ev.data.fd << " as unwritable in socketengine epoll: " << strerror(errno);
+ else
+ s->UnsetFlag(SF_WRITABLE);
}
void Process()
@@ -150,7 +160,7 @@ class SocketEngineEPoll : public SocketEngineBase
class ModuleSocketEngineEPoll : public Module
{
- SocketEngineEPoll *engine;
+ SocketEngineEPoll engine;
public:
ModuleSocketEngineEPoll(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator)
@@ -159,13 +169,11 @@ class ModuleSocketEngineEPoll : public Module
this->SetPermanent(true);
this->SetType(SOCKETENGINE);
- engine = new SocketEngineEPoll();
- SocketEngine = engine;
+ SocketEngine = &engine;
}
~ModuleSocketEngineEPoll()
{
- delete engine;
SocketEngine = NULL;
}
};