From 27c8eb0d6d4ed98700550053ba29b1c9a5452a20 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 4 Sep 2019 12:21:51 -0700 Subject: [PATCH] GitHub issue #1019 --- windows/ZeroTierOne/ZeroTierOne.vcxproj | 15 ++++++++++++++- windows/ZeroTierOne/ZeroTierOneService.cpp | 12 ++++++++---- windows/ZeroTierOne/ZeroTierOneService.h | 5 +++-- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/windows/ZeroTierOne/ZeroTierOne.vcxproj b/windows/ZeroTierOne/ZeroTierOne.vcxproj index 2bcc8603..1cfe8ae0 100644 --- a/windows/ZeroTierOne/ZeroTierOne.vcxproj +++ b/windows/ZeroTierOne/ZeroTierOne.vcxproj @@ -113,7 +113,20 @@ - + + false + false + false + true + StreamingSIMDExtensions2 + NoExtensions + false + false + false + false + StreamingSIMDExtensions2 + NoExtensions + diff --git a/windows/ZeroTierOne/ZeroTierOneService.cpp b/windows/ZeroTierOne/ZeroTierOneService.cpp index 9b274d34..7e4cbf02 100644 --- a/windows/ZeroTierOne/ZeroTierOneService.cpp +++ b/windows/ZeroTierOne/ZeroTierOneService.cpp @@ -76,9 +76,7 @@ restart_node: ZeroTier::Mutex::Lock _l(_lock); delete _service; _service = (ZeroTier::OneService *)0; // in case newInstance() fails - _service = ZeroTier::OneService::newInstance( - ZeroTier::OneService::platformDefaultHomePath().c_str(), - ZT_DEFAULT_PORT); + _service = ZeroTier::OneService::newInstance(_path.c_str(), ZT_DEFAULT_PORT); } switch(_service->run()) { case ZeroTier::OneService::ONE_UNRECOVERABLE_ERROR: { @@ -120,10 +118,16 @@ restart_node: } } -void ZeroTierOneService::OnStart(DWORD dwArgc, LPSTR *lpszArgv) +void ZeroTierOneService::OnStart(DWORD dwArgc, PSTR *lpszArgv) { ZT_SVCDBG("ZeroTierOneService::OnStart()\r\n"); + if ((dwArgc > 1)&&(lpszArgv[1])&&(strlen(lpszArgv[1]) > 0)) { + this->_path = lpszArgv[1]; + } else { + this->_path = ZeroTier::OneService::platformDefaultHomePath(); + } + try { _thread = ZeroTier::Thread::start(this); } catch ( ... ) { diff --git a/windows/ZeroTierOne/ZeroTierOneService.h b/windows/ZeroTierOne/ZeroTierOneService.h index dbcd8c6d..c4edb820 100644 --- a/windows/ZeroTierOne/ZeroTierOneService.h +++ b/windows/ZeroTierOne/ZeroTierOneService.h @@ -57,11 +57,12 @@ public: throw(); protected: - virtual void OnStart(DWORD dwArgc, PSTR *pszArgv); - virtual void OnStop(); + virtual void OnStart(DWORD dwArgc, PSTR *pszArgv); + virtual void OnStop(); virtual void OnShutdown(); private: + std::string _path; ZeroTier::OneService *volatile _service; ZeroTier::Mutex _lock; ZeroTier::Thread _thread;