From 9865b9fde2d675d974d6a0414a4ec084e1905b84 Mon Sep 17 00:00:00 2001 From: Markus Grüneis Date: Tue, 16 Feb 2010 19:17:43 +0000 Subject: fixed win32 build --- src/anytun.cpp | 26 ++-- src/anytun.vcproj | 291 +++++++++++++++++++------------------ src/posix/signalHandler.hpp | 6 +- src/signalController.cpp | 9 +- src/signalController.h | 15 +- src/win32/signalHandler.hpp | 6 +- src/win32/signalServiceHandler.hpp | 19 +-- src/win32/winService.cpp | 4 +- src/win32/winService.h | 2 +- 9 files changed, 185 insertions(+), 193 deletions(-) (limited to 'src') diff --git a/src/anytun.cpp b/src/anytun.cpp index ddec0c0..a693e34 100644 --- a/src/anytun.cpp +++ b/src/anytun.cpp @@ -51,13 +51,13 @@ #include "keyDerivationFactory.h" #include "signalController.h" #ifndef _MSC_VER -#include "daemonService.h" +# include "daemonService.h" #else -#ifdef WIN_SERVICE -#include "win32/winService.h" -#else -#include "nullDaemon.h" -#endif +# ifdef WIN_SERVICE +# include "win32/winService.h" +# else +# include "nullDaemon.h" +# endif #endif #include "packetSource.h" #include "tunDevice.h" @@ -69,7 +69,6 @@ #include "networkAddress.h" #endif - #ifndef ANYTUN_NOSYNC #include "syncQueue.h" #include "syncCommand.h" @@ -358,14 +357,13 @@ int main(int argc, char* argv[]) } } -int real_main(int argc, char* argv[], WinService* service) +int real_main(int argc, char* argv[], WinService& service) { bool daemonized=true; #else int main(int argc, char* argv[]) { - DaemonService daemon; - DaemonService* service = &daemon; + DaemonService service; bool daemonized=false; #endif try @@ -390,9 +388,9 @@ int main(int argc, char* argv[]) gOpt.parse_post(); // print warnings // daemonizing has to done before any thread gets started - service->initPrivs(gOpt.getUsername(), gOpt.getGroupname()); + service.initPrivs(gOpt.getUsername(), gOpt.getGroupname()); if(gOpt.getDaemonize()) { - service->daemonize(); + service.daemonize(); daemonized = true; } @@ -410,13 +408,13 @@ int main(int argc, char* argv[]) if(gOpt.getChrootDir() != "") { try { - service->chroot(gOpt.getChrootDir()); + service.chroot(gOpt.getChrootDir()); } catch(const std::runtime_error& e) { cLog.msg(Log::PRIO_WARNING) << "ignoring chroot error: " << e.what(); } } - service->dropPrivs(); + service.dropPrivs(); // this has to be called before the first thread is started gSignalController.init(service); diff --git a/src/anytun.vcproj b/src/anytun.vcproj index 721daee..37ca622 100644 --- a/src/anytun.vcproj +++ b/src/anytun.vcproj @@ -1,4 +1,4 @@ - + @@ -44,9 +43,8 @@ /> @@ -367,7 +363,8 @@ /> + + @@ -1401,6 +1396,10 @@ RelativePath=".\syncTcpConnection.h" > + + @@ -1489,6 +1488,10 @@ RelativePath=".\networkPrefix.cpp" > + + @@ -1501,7 +1504,7 @@ /> + + diff --git a/src/posix/signalHandler.hpp b/src/posix/signalHandler.hpp index 35075b9..a5668b4 100644 --- a/src/posix/signalHandler.hpp +++ b/src/posix/signalHandler.hpp @@ -30,8 +30,8 @@ * along with anytun. If not, see . */ -#ifndef ANYTUN_signalHandler_h_INCLUDED -#define ANYTUN_signalHandler_h_INCLUDED +#ifndef ANYTUN_signalHandler_hpp_INCLUDED +#define ANYTUN_signalHandler_hpp_INCLUDED #include #include @@ -100,7 +100,7 @@ void handleSignal() } } -void registerSignalHandler(SignalController& ctrl, DaemonService* /*service*/) +void registerSignalHandler(SignalController& ctrl, DaemonService& /*service*/) { sigset_t signal_set; diff --git a/src/signalController.cpp b/src/signalController.cpp index f20b695..6a20588 100644 --- a/src/signalController.cpp +++ b/src/signalController.cpp @@ -71,14 +71,7 @@ int SigErrorHandler(int /*sig*/, const std::string& msg) #endif #endif -void SignalController::init() -{ - DaemonService* service = NULL; - registerSignalHandler(*this, service); - handler[SIGERROR] = boost::bind(SigErrorHandler, _1, _2); -} - -void SignalController::init(DaemonService* service) +void SignalController::init(DaemonService& service) { registerSignalHandler(*this, service); handler[SIGERROR] = boost::bind(SigErrorHandler, _1, _2); diff --git a/src/signalController.h b/src/signalController.h index 8a82c9e..fa5f0fb 100644 --- a/src/signalController.h +++ b/src/signalController.h @@ -39,14 +39,12 @@ #include "threadUtils.hpp" -#ifndef _MSC_VER -#include "daemonService.h" -#else #ifdef WIN_SERVICE -#include "win32/winService.h" +//#include "win32/winService.h" +class WinService; +typedef WinService DaemonService; #else -#include "nullDaemon.h" -#endif +class DaemonService; #endif #define SIGERROR -1 @@ -61,8 +59,7 @@ class SignalController public: static SignalController& instance(); - void init(); - void init(DaemonService* service); + void init(DaemonService& service); int run(); void inject(int sig, const std::string& msg = ""); @@ -92,7 +89,7 @@ private: typedef std::map CallbackMap; CallbackMap callbacks; - friend void registerSignalHandler(SignalController& ctrl, DaemonService* service); + friend void registerSignalHandler(SignalController& ctrl, DaemonService& service); }; extern SignalController& gSignalController; diff --git a/src/win32/signalHandler.hpp b/src/win32/signalHandler.hpp index fb0c7e6..23872a6 100644 --- a/src/win32/signalHandler.hpp +++ b/src/win32/signalHandler.hpp @@ -30,8 +30,8 @@ * along with anytun. If not, see . */ -#ifndef ANYTUN_signalHandler_h_INCLUDED -#define ANYTUN_signalHandler_h_INCLUDED +#ifndef ANYTUN_signalHandler_hpp_INCLUDED +#define ANYTUN_signalHandler_hpp_INCLUDED #include @@ -71,7 +71,7 @@ bool handleSignal(DWORD ctrlType) return true; } -void registerSignalHandler(SignalController& ctrl, DaemonService* /*service*/) +void registerSignalHandler(SignalController& ctrl, DaemonService& /*service*/) { if(!SetConsoleCtrlHandler((PHANDLER_ROUTINE)handleSignal, true)) AnytunError::throwErr() << "Error on SetConsoleCtrlhandler: " << AnytunErrno(GetLastError()); diff --git a/src/win32/signalServiceHandler.hpp b/src/win32/signalServiceHandler.hpp index 28121f4..da16de5 100644 --- a/src/win32/signalServiceHandler.hpp +++ b/src/win32/signalServiceHandler.hpp @@ -30,22 +30,19 @@ * along with anytun. If not, see . */ -#ifndef ANYTUN_signalServiceHandler_h_INCLUDED -#define ANYTUN_signalServiceHandler_h_INCLUDED +#ifndef ANYTUN_signalServiceHandler_hpp_INCLUDED +#define ANYTUN_signalServiceHandler_hpp_INCLUDED #include "winService.h" -void registerSignalHandler(SignalController& ctrl, WinService* service) +void registerSignalHandler(SignalController& ctrl, WinService& service) { - if(!service) - return; + ctrl.handler[SERVICE_CONTROL_STOP] = boost::bind(&WinService::handleCtrlSignal, &service, _1, _2); + ctrl.handler[SERVICE_CONTROL_INTERROGATE] = boost::bind(&WinService::handleCtrlSignal, &service, _1, _2); + ctrl.handler[SIGUNKNOWN] = boost::bind(&WinService::handleCtrlSignal, &service, _1, _2); - ctrl.handler[SERVICE_CONTROL_STOP] = boost::bind(&WinService::handleCtrlSignal, service, _1, _2); - ctrl.handler[SERVICE_CONTROL_INTERROGATE] = boost::bind(&WinService::handleCtrlSignal, service, _1, _2); - ctrl.handler[SIGUNKNOWN] = boost::bind(&WinService::handleCtrlSignal, service, _1, _2); - - ctrl.callbacks.insert(SignalController::CallbackMap::value_type(CALLB_RUNNING, boost::bind(&WinService::reportStatus, service, SERVICE_RUNNING, NO_ERROR))); - ctrl.callbacks.insert(SignalController::CallbackMap::value_type(CALLB_STOPPING, boost::bind(&WinService::reportStatus, service, SERVICE_STOP_PENDING, NO_ERROR))); + ctrl.callbacks.insert(SignalController::CallbackMap::value_type(CALLB_RUNNING, boost::bind(&WinService::reportStatus, &service, SERVICE_RUNNING, NO_ERROR))); + ctrl.callbacks.insert(SignalController::CallbackMap::value_type(CALLB_STOPPING, boost::bind(&WinService::reportStatus, &service, SERVICE_STOP_PENDING, NO_ERROR))); } #endif diff --git a/src/win32/winService.cpp b/src/win32/winService.cpp index e39fe56..8c17420 100644 --- a/src/win32/winService.cpp +++ b/src/win32/winService.cpp @@ -105,7 +105,7 @@ void WinService::start() AnytunError::throwErr() << "Error on StartServiceCtrlDispatcher: " << AnytunErrno(GetLastError()); } -int real_main(int argc, char* argv[], WinService* service); +int real_main(int argc, char* argv[], WinService& service); VOID WINAPI WinService::main(DWORD dwArgc, LPTSTR *lpszArgv) { @@ -120,7 +120,7 @@ VOID WINAPI WinService::main(DWORD dwArgc, LPTSTR *lpszArgv) service.status_.dwServiceSpecificExitCode = 0; service.reportStatus(SERVICE_START_PENDING, NO_ERROR); - real_main(dwArgc, lpszArgv, &service); + real_main(dwArgc, lpszArgv, service); service.reportStatus(SERVICE_STOPPED, NO_ERROR); } diff --git a/src/win32/winService.h b/src/win32/winService.h index ecba55d..9c95400 100644 --- a/src/win32/winService.h +++ b/src/win32/winService.h @@ -68,7 +68,7 @@ private: SERVICE_STATUS_HANDLE status_handle_; }; -typedef class WinService DaemonService; +typedef WinService DaemonService; #endif -- cgit v1.2.3