diff --git a/projectfiles/VC12/campaignd.vcxproj b/projectfiles/VC12/campaignd.vcxproj
new file mode 100644
index 000000000000..2d1abe13e203
--- /dev/null
+++ b/projectfiles/VC12/campaignd.vcxproj
@@ -0,0 +1,121 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+
+ {DEACBC05-182F-4D9B-A31C-B9A9098DFAAD}
+ campaignd
+
+
+
+ Application
+ true
+ v120
+ NotSet
+
+
+ Application
+ false
+ v120
+ true
+ NotSet
+
+
+
+
+
+
+
+
+
+
+
+
+ $(Configuration)\campaignd\
+
+
+
+ Level3
+ Disabled
+ true
+ ..\..\src;..\..\..\external\include
+ _CRT_SECURE_NO_WARNINGS;_WIN32_WINNT=_WIN32_WINNT_WINXP;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+
+
+ true
+ ..\..\..\external\lib
+ Shlwapi.lib;%(AdditionalDependencies)
+
+
+
+
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ ..\..\src;..\..\..\external\include
+ _CRT_SECURE_NO_WARNINGS;_WIN32_WINNT=_WIN32_WINNT_WINXP;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+
+
+ true
+ true
+ true
+ ..\..\..\external\lib
+ Shlwapi.lib;%(AdditionalDependencies)
+
+
+
+
+ {4a16638b-127b-4ae8-8e0b-4b211b96f976}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(IntDir)Addon\
+
+
+ $(IntDir)Campaign_Server\
+
+
+ $(IntDir)Campaign_Server\
+
+
+ $(IntDir)Campaign_Server\
+
+
+ $(IntDir)
+
+
+ $(IntDir)
+
+
+ $(IntDir)Server\
+
+
+ $(IntDir)Server\
+
+
+
+
+
+
\ No newline at end of file
diff --git a/projectfiles/VC12/campaignd.vcxproj.filters b/projectfiles/VC12/campaignd.vcxproj.filters
new file mode 100644
index 000000000000..920838f264ef
--- /dev/null
+++ b/projectfiles/VC12/campaignd.vcxproj.filters
@@ -0,0 +1,61 @@
+
+
+
+
+ {3f44d190-c2f6-4d26-9902-e9f9452dac22}
+
+
+ {4053cbc0-8a41-470e-aa62-45ea801ed834}
+
+
+ {1e0c6b2f-b2e7-44db-b7f6-81ee59a6caa3}
+
+
+
+
+ Addon
+
+
+ Server
+
+
+ Server
+
+
+ Campaign_Server
+
+
+ Campaign_Server
+
+
+ Campaign_Server
+
+
+ Campaign_Server
+
+
+
+
+
+
+ Addon
+
+
+ Server
+
+
+ Server
+
+
+ Campaign_Server
+
+
+ Campaign_Server
+
+
+ Campaign_Server
+
+
+
+
+
\ No newline at end of file
diff --git a/projectfiles/VC12/wesnoth.sln b/projectfiles/VC12/wesnoth.sln
index 56e1caea2149..6f8674131119 100644
--- a/projectfiles/VC12/wesnoth.sln
+++ b/projectfiles/VC12/wesnoth.sln
@@ -12,6 +12,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblua", "liblua.vcxproj",
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WindowsTimeout", "WindowsTimeout.vcxproj", "{06CDDAD5-8638-46F0-88F5-1B458B7FBE0C}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "campaignd", "campaignd.vcxproj", "{DEACBC05-182F-4D9B-A31C-B9A9098DFAAD}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug_with_VLD|Win32 = Debug_with_VLD|Win32
@@ -60,6 +62,14 @@ Global
{06CDDAD5-8638-46F0-88F5-1B458B7FBE0C}.Release|Win32.Build.0 = Release|Win32
{06CDDAD5-8638-46F0-88F5-1B458B7FBE0C}.ReleaseDEBUG|Win32.ActiveCfg = Debug|Win32
{06CDDAD5-8638-46F0-88F5-1B458B7FBE0C}.ReleaseDEBUG|Win32.Build.0 = Debug|Win32
+ {DEACBC05-182F-4D9B-A31C-B9A9098DFAAD}.Debug_with_VLD|Win32.ActiveCfg = Debug|Win32
+ {DEACBC05-182F-4D9B-A31C-B9A9098DFAAD}.Debug_with_VLD|Win32.Build.0 = Debug|Win32
+ {DEACBC05-182F-4D9B-A31C-B9A9098DFAAD}.Debug|Win32.ActiveCfg = Debug|Win32
+ {DEACBC05-182F-4D9B-A31C-B9A9098DFAAD}.Debug|Win32.Build.0 = Debug|Win32
+ {DEACBC05-182F-4D9B-A31C-B9A9098DFAAD}.Release|Win32.ActiveCfg = Release|Win32
+ {DEACBC05-182F-4D9B-A31C-B9A9098DFAAD}.Release|Win32.Build.0 = Release|Win32
+ {DEACBC05-182F-4D9B-A31C-B9A9098DFAAD}.ReleaseDEBUG|Win32.ActiveCfg = Release|Win32
+ {DEACBC05-182F-4D9B-A31C-B9A9098DFAAD}.ReleaseDEBUG|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/campaign_server/campaign_server.cpp b/src/campaign_server/campaign_server.cpp
index 509b5ef23637..51a73ef696ec 100644
--- a/src/campaign_server/campaign_server.cpp
+++ b/src/campaign_server/campaign_server.cpp
@@ -429,13 +429,9 @@ void server::send_error(const std::string& msg, socket_ptr sock)
async_send_doc(sock, doc, std::bind(&server::handle_new_client, this, _1), null_handler);
}
-void server::register_handler(const std::string& cmd, const request_handler& func)
-{
- handlers_[cmd] = func;
-}
-
#define REGISTER_CAMPAIGND_HANDLER(req_id) \
- register_handler(#req_id, &server::handle_##req_id)
+ handlers_[#req_id] = std::bind(&server::handle_##req_id, \
+ std::placeholders::_1, std::placeholders::_2)
void server::register_handlers()
{
diff --git a/src/campaign_server/campaign_server.hpp b/src/campaign_server/campaign_server.hpp
index 545592fc4f43..2e122aa84d65 100644
--- a/src/campaign_server/campaign_server.hpp
+++ b/src/campaign_server/campaign_server.hpp
@@ -161,17 +161,6 @@ class server : public server_base
*/
void register_handlers();
- /**
- * Registers a single request handler.
- *
- * @param cmd The request command, corresponding to the name of the [tag}
- * with the request body (e.g. "handle_request_terms").
- * @param func The request function. This should be a class method passed
- * as a @a std::bind function object that takes a single
- * parameter of type @a request.
- */
- void register_handler(const std::string& cmd, const request_handler& func);
-
void handle_request_campaign_list(const request&);
void handle_request_campaign(const request&);
void handle_request_terms(const request&);