commit
d8aae1ce1d
2 changed files with 41 additions and 2 deletions
26
src/main.cpp
26
src/main.cpp
|
@ -4764,3 +4764,29 @@ uint64 CTxOutCompressor::DecompressAmount(uint64 x)
|
||||||
}
|
}
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class CMainCleanup
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CMainCleanup() {}
|
||||||
|
~CMainCleanup() {
|
||||||
|
// block headers
|
||||||
|
std::map<uint256, CBlockIndex*>::iterator it1 = mapBlockIndex.begin();
|
||||||
|
for (; it1 != mapBlockIndex.end(); it1++)
|
||||||
|
delete (*it1).second;
|
||||||
|
mapBlockIndex.clear();
|
||||||
|
|
||||||
|
// orphan blocks
|
||||||
|
std::map<uint256, CBlock*>::iterator it2 = mapOrphanBlocks.begin();
|
||||||
|
for (; it2 != mapOrphanBlocks.end(); it2++)
|
||||||
|
delete (*it2).second;
|
||||||
|
mapOrphanBlocks.clear();
|
||||||
|
|
||||||
|
// orphan transactions
|
||||||
|
std::map<uint256, CDataStream*>::iterator it3 = mapOrphanTransactions.begin();
|
||||||
|
for (; it3 != mapOrphanTransactions.end(); it3++)
|
||||||
|
delete (*it3).second;
|
||||||
|
mapOrphanTransactions.clear();
|
||||||
|
}
|
||||||
|
} instance_of_cmaincleanup;
|
||||||
|
|
17
src/net.cpp
17
src/net.cpp
|
@ -775,12 +775,12 @@ void ThreadSocketHandler(void* parg)
|
||||||
printf("ThreadSocketHandler exited\n");
|
printf("ThreadSocketHandler exited\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static list<CNode*> vNodesDisconnected;
|
||||||
|
|
||||||
void ThreadSocketHandler2(void* parg)
|
void ThreadSocketHandler2(void* parg)
|
||||||
{
|
{
|
||||||
printf("ThreadSocketHandler started\n");
|
printf("ThreadSocketHandler started\n");
|
||||||
list<CNode*> vNodesDisconnected;
|
|
||||||
unsigned int nPrevNodeCount = 0;
|
unsigned int nPrevNodeCount = 0;
|
||||||
|
|
||||||
loop
|
loop
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
@ -2085,6 +2085,7 @@ bool StopNode()
|
||||||
Sleep(20);
|
Sleep(20);
|
||||||
Sleep(50);
|
Sleep(50);
|
||||||
DumpAddresses();
|
DumpAddresses();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2105,6 +2106,18 @@ public:
|
||||||
if (closesocket(hListenSocket) == SOCKET_ERROR)
|
if (closesocket(hListenSocket) == SOCKET_ERROR)
|
||||||
printf("closesocket(hListenSocket) failed with error %d\n", WSAGetLastError());
|
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
|
#ifdef WIN32
|
||||||
// Shutdown Windows Sockets
|
// Shutdown Windows Sockets
|
||||||
WSACleanup();
|
WSACleanup();
|
||||||
|
|
Loading…
Reference in a new issue