From: CryptoManiac Date: Sat, 18 Apr 2015 21:46:00 +0000 (-0700) Subject: Merge pull request #212 from svost/bitcoin-net X-Git-Tag: nvc-v0.5.3~30 X-Git-Url: https://git.novaco.in/?p=novacoin.git;a=commitdiff_plain;h=4ed847cc0760affee25f8b13c4d7d429d0de0739;hp=9e9a08714ff52f80a1b82f1a29fe390a61efacc0 Merge pull request #212 from svost/bitcoin-net Bitcoin net --- diff --git a/src/irc.cpp b/src/irc.cpp index e5d9955..25033df 100644 --- a/src/irc.cpp +++ b/src/irc.cpp @@ -192,6 +192,8 @@ void ThreadIRCSeed(void* parg) // Make this thread recognisable as the IRC seeding thread RenameThread("novacoin-ircseed"); + printf("ThreadIRCSeed started\n"); + try { ThreadIRCSeed2(parg); @@ -218,7 +220,8 @@ void ThreadIRCSeed2(void* parg) if (!GetBoolArg("-irc", true)) return; - printf("ThreadIRCSeed started\n"); + printf("ThreadIRCSeed trying to connect...\n"); + int nErrorWait = 10; int nRetryWait = 10; int nNameRetry = 0; diff --git a/src/main.cpp b/src/main.cpp index e3e4fd8..2f16f57 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4103,3 +4103,25 @@ bool SendMessages(CNode* pto, bool fSendTrickle) } return true; } + + +class CMainCleanup +{ +public: + CMainCleanup() {} + ~CMainCleanup() { + // block headers + std::map::iterator it1 = mapBlockIndex.begin(); + for (; it1 != mapBlockIndex.end(); it1++) + delete (*it1).second; + mapBlockIndex.clear(); + + // orphan blocks + std::map::iterator it2 = mapOrphanBlocks.begin(); + for (; it2 != mapOrphanBlocks.end(); it2++) + delete (*it2).second; + mapOrphanBlocks.clear(); + + // orphan transactions + } +} instance_of_cmaincleanup; \ No newline at end of file diff --git a/src/net.cpp b/src/net.cpp index fa2bf44..4eacd53 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -600,12 +600,12 @@ void ThreadSocketHandler(void* parg) printf("ThreadSocketHandler exited\n"); } +static list vNodesDisconnected; + void ThreadSocketHandler2(void* parg) { printf("ThreadSocketHandler started\n"); - list vNodesDisconnected; unsigned int nPrevNodeCount = 0; - while (true) { // @@ -1218,6 +1218,8 @@ void DumpAddresses() void ThreadDumpAddress2(void* parg) { + printf("ThreadDumpAddress started\n"); + vnThreadsRunning[THREAD_DUMPADDRESS]++; while (!fShutdown) { @@ -1980,6 +1982,7 @@ bool StopNode() Sleep(20); Sleep(50); DumpAddresses(); + return true; } @@ -2000,6 +2003,18 @@ public: if (closesocket(hListenSocket) == SOCKET_ERROR) printf("closesocket(hListenSocket) failed with error %d\n", WSAGetLastError()); + // clean up some globals (to help leak detection) + BOOST_FOREACH(CNode *pnode, vNodes) + delete pnode; + BOOST_FOREACH(CNode *pnode, vNodesDisconnected) + delete pnode; + vNodes.clear(); + vNodesDisconnected.clear(); + delete semOutbound; + semOutbound = NULL; + delete pnodeLocalHost; + pnodeLocalHost = NULL; + #ifdef WIN32 // Shutdown Windows Sockets WSACleanup();