summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/inspircd.h4
-rw-r--r--src/inspircd.cpp6
-rw-r--r--src/modules/m_spanningtree/main.cpp3
3 files changed, 6 insertions, 7 deletions
diff --git a/include/inspircd.h b/include/inspircd.h
index 17dca94d5..42454f354 100644
--- a/include/inspircd.h
+++ b/include/inspircd.h
@@ -408,6 +408,10 @@ class CoreExport InspIRCd
*/
ProtocolInterface* PI;
+ /** Default implementation of the ProtocolInterface, does nothing
+ */
+ ProtocolInterface DefaultProtocolInterface;
+
/** Holds extensible for user operquit
*/
StringExtItem OperQuit;
diff --git a/src/inspircd.cpp b/src/inspircd.cpp
index cb428c32a..50c79fb7b 100644
--- a/src/inspircd.cpp
+++ b/src/inspircd.cpp
@@ -134,7 +134,6 @@ void InspIRCd::Cleanup()
DeleteZero(this->Modules);
DeleteZero(this->SNO);
DeleteZero(this->Config);
- DeleteZero(this->PI);
SocketEngine::Deinit();
Logs->CloseLogs();
DeleteZero(this->Logs);
@@ -232,6 +231,7 @@ void InspIRCd::WritePID(const std::string &filename)
InspIRCd::InspIRCd(int argc, char** argv) :
ConfigFileName(INSPIRCD_CONFIG_PATH "/inspircd.conf"),
+ PI(&DefaultProtocolInterface),
/* Functor pointer initialisation.
*
@@ -256,7 +256,6 @@ InspIRCd::InspIRCd(int argc, char** argv) :
// Initialize so that if we exit before proper initialization they're not deleted
this->Logs = 0;
- this->PI = 0;
this->Users = 0;
this->Config = 0;
this->SNO = 0;
@@ -274,9 +273,6 @@ InspIRCd::InspIRCd(int argc, char** argv) :
SocketEngine::Init();
- /* Default implementation does nothing */
- this->PI = new ProtocolInterface;
-
// Create base manager classes early, so nothing breaks
this->Users = new UserManager;
diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp
index 8f0586923..2ab05e014 100644
--- a/src/modules/m_spanningtree/main.cpp
+++ b/src/modules/m_spanningtree/main.cpp
@@ -86,7 +86,6 @@ void ModuleSpanningTree::init()
Utils->TreeRoot = new TreeServer;
commands = new SpanningTreeCommands(this);
- delete ServerInstance->PI;
ServerInstance->PI = &protocolinterface;
delete ServerInstance->FakeClient->server;
@@ -758,7 +757,7 @@ CullResult ModuleSpanningTree::cull()
ModuleSpanningTree::~ModuleSpanningTree()
{
- ServerInstance->PI = new ProtocolInterface;
+ ServerInstance->PI = &ServerInstance->DefaultProtocolInterface;
Server* newsrv = new Server(ServerInstance->Config->ServerName, ServerInstance->Config->ServerDesc);
SetLocalUsersServer(newsrv);