X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fnet.cpp;h=632c9b92cbf734722bba51b85c0e7e017abf7a48;hb=b551b8a0a3084036528b348622e341bd43ef38e3;hp=ab079cfcff177c87c1d8ed1084c24b252bac826b;hpb=428f94b5411bf51b6e77d611daa709dfbb063966;p=novacoin.git diff --git a/src/net.cpp b/src/net.cpp index ab079cf..632c9b9 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -9,6 +9,8 @@ #include "init.h" #include "addrman.h" #include "ui_interface.h" +#include "miner.h" +#include "ntp.h" #ifdef WIN32 #include @@ -48,7 +50,7 @@ void ThreadDNSAddressSeed2(void* parg); struct LocalServiceInfo { int nScore; - int nPort; + uint16_t nPort; }; // @@ -64,7 +66,7 @@ static bool vfReachable[NET_MAX] = {}; static bool vfLimited[NET_MAX] = {}; static CNode* pnodeLocalHost = NULL; static CNode* pnodeSync = NULL; -CAddress addrSeenByPeer(CService("0.0.0.0", 0), nLocalServices); +CAddress addrSeenByPeer(CService("0.0.0.0", nPortZero), nLocalServices); uint64_t nLocalHostNonce = 0; boost::array vnThreadsRunning; static std::vector vhListenSocket; @@ -138,7 +140,7 @@ bool GetLocal(CService& addr, const CNetAddr *paddrPeer) // get best local address for a particular peer as a CAddress CAddress GetLocalAddress(const CNetAddr *paddrPeer) { - CAddress ret(CService("0.0.0.0",0),0); + CAddress ret(CService("0.0.0.0", nPortZero), 0); CService addr; if (GetLocal(addr, paddrPeer)) { @@ -478,8 +480,7 @@ void CNode::Cleanup() void CNode::PushVersion() { - /// when NTP implemented, change to just nTime = GetAdjustedTime() - int64_t nTime = (fInbound ? GetAdjustedTime() : GetTime()); + int64_t nTime = GetAdjustedTime(); CAddress addrYou, addrMe; bool fHidden = false; @@ -497,7 +498,7 @@ void CNode::PushVersion() } if (!fHidden) { - addrYou = (addr.IsRoutable() && !IsProxy(addr) ? addr : CAddress(CService("0.0.0.0",0))); + addrYou = (addr.IsRoutable() && !IsProxy(addr) ? addr : CAddress(CService("0.0.0.0", nPortZero))); addrMe = GetLocalAddress(&addr); } @@ -1296,27 +1297,6 @@ void static ProcessOneShot() } } -// ppcoin: stake minter thread -void static ThreadStakeMinter(void* parg) -{ - printf("ThreadStakeMinter started\n"); - CWallet* pwallet = (CWallet*)parg; - try - { - vnThreadsRunning[THREAD_MINTER]++; - StakeMiner(pwallet); - vnThreadsRunning[THREAD_MINTER]--; - } - catch (std::exception& e) { - vnThreadsRunning[THREAD_MINTER]--; - PrintException(&e, "ThreadStakeMinter()"); - } catch (...) { - vnThreadsRunning[THREAD_MINTER]--; - PrintException(NULL, "ThreadStakeMinter()"); - } - printf("ThreadStakeMinter exiting, %d threads remaining\n", vnThreadsRunning[THREAD_MINTER]); -} - void ThreadOpenConnections2(void* parg) { printf("ThreadOpenConnections started\n"); @@ -1600,13 +1580,13 @@ bool OpenNetworkConnection(const CAddress& addrConnect, CSemaphoreGrant *grantOu // for now, use a very simple selection metric: the node from which we received // most recently -double static NodeSyncScore(const CNode *pnode) { - return -pnode->nLastRecv; +static int64_t NodeSyncScore(const CNode *pnode) { + return pnode->nLastRecv; } void static StartSync(const vector &vNodes) { CNode *pnodeNewSync = NULL; - double dBestScore = 0; + int64_t nBestScore = 0; // Iterate over all nodes BOOST_FOREACH(CNode* pnode, vNodes) { @@ -1616,10 +1596,10 @@ void static StartSync(const vector &vNodes) { (pnode->nStartingHeight > (nBestHeight - 144)) && (pnode->nVersion < NOBLKS_VERSION_START || pnode->nVersion >= NOBLKS_VERSION_END)) { // if ok, compare node's score with the best so far - double dScore = NodeSyncScore(pnode); - if (pnodeNewSync == NULL || dScore > dBestScore) { + int64_t nScore = NodeSyncScore(pnode); + if (pnodeNewSync == NULL || nScore > nBestScore) { pnodeNewSync = pnode; - dBestScore = dScore; + nBestScore = nScore; } } } @@ -1898,7 +1878,7 @@ void StartNode(void* parg) } if (pnodeLocalHost == NULL) - pnodeLocalHost = new CNode(INVALID_SOCKET, CAddress(CService("127.0.0.1", 0), nLocalServices)); + pnodeLocalHost = new CNode(INVALID_SOCKET, CAddress(CService("127.0.0.1", nPortZero), nLocalServices)); Discover(); @@ -1945,9 +1925,16 @@ void StartNode(void* parg) if (!NewThread(ThreadDumpAddress, NULL)) printf("Error; NewThread(ThreadDumpAddress) failed\n"); - // ppcoin: mint proof-of-stake blocks in the background + // Mint proof-of-stake blocks in the background if (!NewThread(ThreadStakeMinter, pwalletMain)) printf("Error: NewThread(ThreadStakeMinter) failed\n"); + + // Trusted NTP server, it's localhost by default. + strTrustedUpstream = GetArg("-ntp", "localhost"); + + // Start periodical NTP sampling thread + NewThread(ThreadNtpSamples, NULL); + } bool StopNode()