From 8dcda5453e7fec40b1f55a66bf5f60f1b8dbd833 Mon Sep 17 00:00:00 2001
From: Andrei Karas <akaras@inbox.ru>
Date: Fri, 5 Sep 2014 20:15:08 +0300
Subject: Fix server features initialisation.

---
 src/net/eathena/generalhandler.cpp | 4 +++-
 src/net/eathena/generalhandler.h   | 3 +++
 src/net/eathena/serverfeatures.cpp | 7 +++++++
 src/net/eathena/serverfeatures.h   | 4 ++++
 src/net/tmwa/generalhandler.cpp    | 4 +++-
 src/net/tmwa/generalhandler.h      | 3 +++
 src/net/tmwa/serverfeatures.cpp    | 8 ++++++++
 src/net/tmwa/serverfeatures.h      | 4 ++++
 8 files changed, 35 insertions(+), 2 deletions(-)

(limited to 'src/net')

diff --git a/src/net/eathena/generalhandler.cpp b/src/net/eathena/generalhandler.cpp
index 5a18b15f9..0a838c248 100644
--- a/src/net/eathena/generalhandler.cpp
+++ b/src/net/eathena/generalhandler.cpp
@@ -54,6 +54,7 @@
 #include "net/eathena/partyhandler.h"
 #include "net/eathena/playerhandler.h"
 #include "net/eathena/protocol.h"
+#include "net/eathena/serverfeatures.h"
 #include "net/eathena/tradehandler.h"
 #include "net/eathena/skillhandler.h"
 #include "net/eathena/questhandler.h"
@@ -90,7 +91,8 @@ GeneralHandler::GeneralHandler() :
     mPlayerHandler(new PlayerHandler),
     mSkillHandler(new SkillHandler),
     mTradeHandler(new TradeHandler),
-    mQuestHandler(new QuestHandler)
+    mQuestHandler(new QuestHandler),
+    mServerFeatures(new ServerFeatures)
 {
     static const uint16_t _messages[] =
     {
diff --git a/src/net/eathena/generalhandler.h b/src/net/eathena/generalhandler.h
index c509ef6da..edce8330e 100644
--- a/src/net/eathena/generalhandler.h
+++ b/src/net/eathena/generalhandler.h
@@ -30,6 +30,8 @@
 namespace EAthena
 {
 
+class ServerFeatures;
+
 class GeneralHandler final : public MessageHandler,
                              public Net::GeneralHandler
 {
@@ -75,6 +77,7 @@ class GeneralHandler final : public MessageHandler,
         MessageHandlerPtr mSkillHandler;
         MessageHandlerPtr mTradeHandler;
         MessageHandlerPtr mQuestHandler;
+        ServerFeatures *mServerFeatures;
 };
 
 }  // namespace EAthena
diff --git a/src/net/eathena/serverfeatures.cpp b/src/net/eathena/serverfeatures.cpp
index 3b11842e6..cb0b730e4 100644
--- a/src/net/eathena/serverfeatures.cpp
+++ b/src/net/eathena/serverfeatures.cpp
@@ -22,9 +22,16 @@
 
 #include "debug.h"
 
+extern Net::ServerFeatures *serverFeatures;
+
 namespace EAthena
 {
 
+ServerFeatures::ServerFeatures()
+{
+    serverFeatures = this;
+}
+
 bool ServerFeatures::haveOnlineList() const
 {
     return false;
diff --git a/src/net/eathena/serverfeatures.h b/src/net/eathena/serverfeatures.h
index 79febd773..c15bbb705 100644
--- a/src/net/eathena/serverfeatures.h
+++ b/src/net/eathena/serverfeatures.h
@@ -30,6 +30,10 @@ namespace EAthena
 class ServerFeatures final : public Net::ServerFeatures
 {
     public:
+        ServerFeatures();
+
+        A_DELETE_COPY(ServerFeatures)
+
         bool haveOnlineList() const override final;
 };
 
diff --git a/src/net/tmwa/generalhandler.cpp b/src/net/tmwa/generalhandler.cpp
index a31f6d1dc..be33614a2 100644
--- a/src/net/tmwa/generalhandler.cpp
+++ b/src/net/tmwa/generalhandler.cpp
@@ -55,6 +55,7 @@
 #include "net/tmwa/pethandler.h"
 #include "net/tmwa/playerhandler.h"
 #include "net/tmwa/protocol.h"
+#include "net/tmwa/serverfeatures.h"
 #include "net/tmwa/tradehandler.h"
 #include "net/tmwa/skillhandler.h"
 #include "net/tmwa/questhandler.h"
@@ -92,7 +93,8 @@ GeneralHandler::GeneralHandler() :
     mPlayerHandler(new PlayerHandler),
     mSkillHandler(new SkillHandler),
     mTradeHandler(new TradeHandler),
-    mQuestHandler(new QuestHandler)
+    mQuestHandler(new QuestHandler),
+    mServerFeatures(new ServerFeatures)
 {
     static const uint16_t _messages[] =
     {
diff --git a/src/net/tmwa/generalhandler.h b/src/net/tmwa/generalhandler.h
index 083483b11..cf2d848f0 100644
--- a/src/net/tmwa/generalhandler.h
+++ b/src/net/tmwa/generalhandler.h
@@ -30,6 +30,8 @@
 namespace TmwAthena
 {
 
+class ServerFeatures;
+
 class GeneralHandler final : public MessageHandler,
                              public Net::GeneralHandler
 {
@@ -76,6 +78,7 @@ class GeneralHandler final : public MessageHandler,
         MessageHandlerPtr mSkillHandler;
         MessageHandlerPtr mTradeHandler;
         MessageHandlerPtr mQuestHandler;
+        ServerFeatures *mServerFeatures;
 };
 
 }  // namespace TmwAthena
diff --git a/src/net/tmwa/serverfeatures.cpp b/src/net/tmwa/serverfeatures.cpp
index d2aba176b..416183e3f 100644
--- a/src/net/tmwa/serverfeatures.cpp
+++ b/src/net/tmwa/serverfeatures.cpp
@@ -20,13 +20,21 @@
 
 #include "net/tmwa/serverfeatures.h"
 
+#include "net/net.h"
+
 #include "debug.h"
 
 extern int serverVersion;
+extern Net::ServerFeatures *serverFeatures;
 
 namespace TmwAthena
 {
 
+ServerFeatures::ServerFeatures()
+{
+    serverFeatures = this;
+}
+
 bool ServerFeatures::haveOnlineList() const
 {
     return serverVersion >= 3;
diff --git a/src/net/tmwa/serverfeatures.h b/src/net/tmwa/serverfeatures.h
index f6daa2eb7..6b85b887c 100644
--- a/src/net/tmwa/serverfeatures.h
+++ b/src/net/tmwa/serverfeatures.h
@@ -30,6 +30,10 @@ namespace TmwAthena
 class ServerFeatures final : public Net::ServerFeatures
 {
     public:
+        ServerFeatures();
+
+        A_DELETE_COPY(ServerFeatures)
+
         bool haveOnlineList() const override final;
 };
 
-- 
cgit v1.2.3-70-g09d2