diff --git a/src/compat.h b/src/compat.h index 8fd0dd1..8683371 100644 --- a/src/compat.h +++ b/src/compat.h @@ -25,12 +25,13 @@ #include #endif -typedef u_int SOCKET; + #ifdef WIN32 #define MSG_NOSIGNAL 0 #define MSG_DONTWAIT 0 typedef int socklen_t; #else +typedef u_int SOCKET; #include "errno.h" #define WSAGetLastError() errno #define WSAEINVAL EINVAL diff --git a/src/init.cpp b/src/init.cpp index 10dd989..d97241e 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -478,7 +478,7 @@ bool AppInit2() } if (pid > 0) { - CreatePidFile(GetPidFile(), pid); + CreatePidFile(GetPidFile(), pid); return true; } diff --git a/src/main.cpp b/src/main.cpp index e45f489..eff4698 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -11,6 +11,7 @@ #include "ui_interface.h" #include "kernel.h" #include "wallet.h" +#include "util.h" #include #include #include @@ -4537,9 +4538,9 @@ void curecoinMiner(CWallet *pwallet, bool fProofOfStake) } strMintWarning = ""; printf("CPUMiner : proof-of-stake block found %s\n", pblock->GetHash().ToString().c_str()); - SetThreadPriority(THREAD_PRIORITY_NORMAL); + SetThreadPriority(THREAD_PRIORITY_NORMAL); CheckWork(pblock.get(), *pwalletMain, reservekey); - SetThreadPriority(THREAD_PRIORITY_LOWEST); + SetThreadPriority(THREAD_PRIORITY_LOWEST); } Sleep(500); continue; @@ -4589,9 +4590,9 @@ void curecoinMiner(CWallet *pwallet, bool fProofOfStake) pblock->nNonce = ByteReverse(nNonceFound); assert(hash == pblock->GetHash()); - SetThreadPriority(THREAD_PRIORITY_NORMAL); + SetThreadPriority(THREAD_PRIORITY_NORMAL); CheckWork(pblock.get(), *pwalletMain, reservekey); - SetThreadPriority(THREAD_PRIORITY_LOWEST); + SetThreadPriority(THREAD_PRIORITY_LOWEST); break; } } diff --git a/src/net.cpp b/src/net.cpp index a96e7fb..3a7d78f 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1738,14 +1738,17 @@ bool BindListenPort(const CService &addrBind, std::string& strError) // some systems don't have IPV6_V6ONLY but are always v6only; others do have the option // and enable it by default or not. Try to enable it, if possible. if (addrBind.IsIPv6()) { +#ifndef WIN32 #ifdef IPV6_V6ONLY setsockopt(hListenSocket, IPPROTO_IPV6, IPV6_V6ONLY, (void*)&nOne, sizeof(int)); #endif -#ifdef WIN32 +#else int nProtLevel = 10 /* PROTECTION_LEVEL_UNRESTRICTED */; int nParameterId = 23 /* IPV6_PROTECTION_LEVEl */; // this call is allowed to fail +#ifdef IPV6_V6ONLY setsockopt(hListenSocket, IPPROTO_IPV6, nParameterId, (const char*)&nProtLevel, sizeof(int)); +#endif #endif } #endif diff --git a/src/util.cpp b/src/util.cpp index 0b086b3..f0f5a81 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -67,7 +67,6 @@ namespace boost { #endif - std::map mapArgs; std::map > mapMultiArgs; bool fDebug = false; @@ -1114,6 +1113,17 @@ boost::filesystem::path GetPidFile() return pathPidFile; } +#ifdef WIN32 +void CreatePidFile(const boost::filesystem::path &path, util_pid_t pid) +{ + FILE* file = fopen(path.string().c_str(), "w"); + if (file) + { + fprintf(file, "%d\n", pid); + fclose(file); + } +} +#else void CreatePidFile(const boost::filesystem::path &path, pid_t pid) { FILE* file = fopen(path.string().c_str(), "w"); @@ -1123,6 +1133,7 @@ void CreatePidFile(const boost::filesystem::path &path, pid_t pid) fclose(file); } } +#endif bool RenameOver(boost::filesystem::path src, boost::filesystem::path dest) { diff --git a/src/util.h b/src/util.h index aab2ccf..c88dfcd 100644 --- a/src/util.h +++ b/src/util.h @@ -7,16 +7,18 @@ #include "uint256.h" +#include +#include +#include + #ifndef WIN32 #include #include #include #else -typedef int pid_t; /* define for Windows compatibility */ +#include +typedef int util_pid_t; /* define for Windows compatibility */ #endif -#include -#include -#include #include #include @@ -29,6 +31,7 @@ typedef int pid_t; /* define for Windows compatibility */ #include "netbase.h" // for AddTimeData + typedef long long int64; typedef unsigned long long uint64; @@ -215,7 +218,11 @@ boost::filesystem::path GetDefaultDataDir(); const boost::filesystem::path &GetDataDir(bool fNetSpecific = true); boost::filesystem::path GetConfigFile(); boost::filesystem::path GetPidFile(); +#ifdef WIN32 +void CreatePidFile(const boost::filesystem::path &path, util_pid_t pid); +#else void CreatePidFile(const boost::filesystem::path &path, pid_t pid); +#endif void ReadConfigFile(std::map& mapSettingsRet, std::map >& mapMultiSettingsRet); #ifdef WIN32 boost::filesystem::path GetSpecialFolderPath(int nFolder, bool fCreate = true); @@ -591,7 +598,7 @@ bool NewThread(void(*pfn)(void*), void* parg); #ifdef WIN32 inline void SetThreadPriority(int nPriority) { - SetThreadPriority(GetCurrentThread(), nPriority); + SetThreadPriority(GetCurrentThread(), nPriority); } #else