Fix crash on exit in Windows (does not affect other OSes) and revert debugging tweak in Windows version that prevented service from starting after real install.

This commit is contained in:
Adam Ierymenko 2015-11-17 09:56:19 -08:00
parent 48745eca57
commit 9169b6c999
2 changed files with 25 additions and 18 deletions

View file

@ -96,7 +96,9 @@ Topology::Topology(const RuntimeEnvironment *renv) :
Topology::~Topology()
{
Buffer<ZT_PEER_SUGGESTED_SERIALIZATION_BUFFER_SIZE> pbuf;
Buffer<ZT_PEER_SUGGESTED_SERIALIZATION_BUFFER_SIZE> *pbuf = 0;
try {
pbuf = new Buffer<ZT_PEER_SUGGESTED_SERIALIZATION_BUFFER_SIZE>();
std::string all;
Address *a = (Address *)0;
@ -104,11 +106,11 @@ Topology::~Topology()
Hashtable< Address,SharedPtr<Peer> >::Iterator i(_peers);
while (i.next(a,p)) {
if (std::find(_rootAddresses.begin(),_rootAddresses.end(),*a) == _rootAddresses.end()) {
pbuf.clear();
pbuf->clear();
try {
(*p)->serialize(pbuf);
(*p)->serialize(*pbuf);
try {
all.append((const char *)pbuf.data(),pbuf.size());
all.append((const char *)pbuf->data(),pbuf->size());
} catch ( ... ) {
return; // out of memory? just skip
}
@ -117,6 +119,11 @@ Topology::~Topology()
}
RR->node->dataStorePut("peers.save",all,true);
delete pbuf;
} catch ( ... ) {
delete pbuf;
}
}
SharedPtr<Peer> Topology::addPeer(const SharedPtr<Peer> &peer)

View file

@ -966,7 +966,7 @@ int main(int argc,char **argv)
#ifdef ZT_WIN_RUN_IN_CONSOLE
bool winRunFromCommandLine = true;
#else
bool winRunFromCommandLine = true;
bool winRunFromCommandLine = false;
#endif
#endif // __WINDOWS__