summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@zerotier.com>2013-08-27 16:11:39 -0400
committerAdam Ierymenko <adam.ierymenko@zerotier.com>2013-08-27 16:11:39 -0400
commitc247a3d9914affa6118de5a5b3c2277f4e5e8438 (patch)
treebe8baceccb7a9941e133bb41d66ce2cf44da1a2b
parentcd907a76626538a831e8fc90806aecfe07f47582 (diff)
downloadinfinitytier-c247a3d9914affa6118de5a5b3c2277f4e5e8438.tar.gz
infinitytier-c247a3d9914affa6118de5a5b3c2277f4e5e8438.zip
Build fix in tap, handling of Windows shutdown signals.
-rw-r--r--main.cpp18
-rw-r--r--node/EthernetTap.cpp2
2 files changed, 19 insertions, 1 deletions
diff --git a/main.cpp b/main.cpp
index b0713da8..49530765 100644
--- a/main.cpp
+++ b/main.cpp
@@ -108,6 +108,23 @@ static void sighandlerQuit(int sig)
#endif
#ifdef __WINDOWS__
+static BOOL WINAPI _handlerRoutine(DWORD dwCtrlType)
+{
+ switch(dwCtrlType) {
+ case CTRL_C_EVENT:
+ case CTRL_BREAK_EVENT:
+ case CTRL_CLOSE_EVENT:
+ case CTRL_SHUTDOWN_EVENT:
+ Node *n = node;
+ if (n)
+ n->terminate();
+ return TRUE;
+ }
+ return FALSE;
+}
+#endif
+
+#ifdef __WINDOWS__
int _tmain(int argc, _TCHAR* argv[])
#else
int main(int argc,char **argv)
@@ -127,6 +144,7 @@ int main(int argc,char **argv)
#ifdef __WINDOWS__
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);
+ SetConsoleCtrlHandler(&_handlerRoutine,TRUE);
#endif
_initLibCrypto();
diff --git a/node/EthernetTap.cpp b/node/EthernetTap.cpp
index 9088343c..1b77404a 100644
--- a/node/EthernetTap.cpp
+++ b/node/EthernetTap.cpp
@@ -1017,7 +1017,7 @@ void EthernetTap::setDisplayName(const char *dn)
{
HKEY ifp;
if (RegOpenKeyExA(HKEY_LOCAL_MACHINE,(std::string("SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\") + _myDeviceInstanceId).c_str(),0,KEY_READ|KEY_WRITE,&ifp) == ERROR_SUCCESS) {
- RegSetKeyValueA(ifp,"Connection","Name",REG_SZ,(LPCVOID)dn,strlen(dn)+1);
+ RegSetKeyValueA(ifp,"Connection","Name",REG_SZ,(LPCVOID)dn,(DWORD)(strlen(dn)+1));
RegCloseKey(ifp);
}
}