From: Attila Molnar Date: Wed, 10 Dec 2014 16:50:31 +0000 (+0100) Subject: m_httpd On module unload close all connections hooked by the module being unloaded X-Git-Tag: v2.0.23~95 X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;h=e4167bc3a150116e4235cfa106ab72ee0d14faca;p=user%2Fhenk%2Fcode%2Finspircd.git m_httpd On module unload close all connections hooked by the module being unloaded --- diff --git a/src/modules/m_httpd.cpp b/src/modules/m_httpd.cpp index 2a430d967..2b079c6ff 100644 --- a/src/modules/m_httpd.cpp +++ b/src/modules/m_httpd.cpp @@ -348,7 +348,7 @@ class ModuleHttpServer : public Module void init() { HttpModule = this; - Implementation eventlist[] = { I_OnAcceptConnection, I_OnBackgroundTimer, I_OnRehash }; + Implementation eventlist[] = { I_OnAcceptConnection, I_OnBackgroundTimer, I_OnRehash, I_OnUnloadModule }; ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation)); OnRehash(NULL); } @@ -397,6 +397,20 @@ class ModuleHttpServer : public Module } } + void OnUnloadModule(Module* mod) + { + for (std::set::const_iterator i = sockets.begin(); i != sockets.end(); ) + { + HttpServerSocket* sock = *i; + ++i; + if (sock->GetIOHook() == mod) + { + sock->cull(); + delete sock; + } + } + } + CullResult cull() { std::set local;