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:
@@ -96,27 +96,34 @@ Topology::Topology(const RuntimeEnvironment *renv) :
|
|||||||
|
|
||||||
Topology::~Topology()
|
Topology::~Topology()
|
||||||
{
|
{
|
||||||
Buffer<ZT_PEER_SUGGESTED_SERIALIZATION_BUFFER_SIZE> pbuf;
|
Buffer<ZT_PEER_SUGGESTED_SERIALIZATION_BUFFER_SIZE> *pbuf = 0;
|
||||||
std::string all;
|
try {
|
||||||
|
pbuf = new Buffer<ZT_PEER_SUGGESTED_SERIALIZATION_BUFFER_SIZE>();
|
||||||
|
std::string all;
|
||||||
|
|
||||||
Address *a = (Address *)0;
|
Address *a = (Address *)0;
|
||||||
SharedPtr<Peer> *p = (SharedPtr<Peer> *)0;
|
SharedPtr<Peer> *p = (SharedPtr<Peer> *)0;
|
||||||
Hashtable< Address,SharedPtr<Peer> >::Iterator i(_peers);
|
Hashtable< Address,SharedPtr<Peer> >::Iterator i(_peers);
|
||||||
while (i.next(a,p)) {
|
while (i.next(a,p)) {
|
||||||
if (std::find(_rootAddresses.begin(),_rootAddresses.end(),*a) == _rootAddresses.end()) {
|
if (std::find(_rootAddresses.begin(),_rootAddresses.end(),*a) == _rootAddresses.end()) {
|
||||||
pbuf.clear();
|
pbuf->clear();
|
||||||
try {
|
|
||||||
(*p)->serialize(pbuf);
|
|
||||||
try {
|
try {
|
||||||
all.append((const char *)pbuf.data(),pbuf.size());
|
(*p)->serialize(*pbuf);
|
||||||
} catch ( ... ) {
|
try {
|
||||||
return; // out of memory? just skip
|
all.append((const char *)pbuf->data(),pbuf->size());
|
||||||
}
|
} catch ( ... ) {
|
||||||
} catch ( ... ) {} // peer too big? shouldn't happen, but it so skip
|
return; // out of memory? just skip
|
||||||
|
}
|
||||||
|
} catch ( ... ) {} // peer too big? shouldn't happen, but it so skip
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
RR->node->dataStorePut("peers.save",all,true);
|
RR->node->dataStorePut("peers.save",all,true);
|
||||||
|
|
||||||
|
delete pbuf;
|
||||||
|
} catch ( ... ) {
|
||||||
|
delete pbuf;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SharedPtr<Peer> Topology::addPeer(const SharedPtr<Peer> &peer)
|
SharedPtr<Peer> Topology::addPeer(const SharedPtr<Peer> &peer)
|
||||||
|
|||||||
2
one.cpp
2
one.cpp
@@ -966,7 +966,7 @@ int main(int argc,char **argv)
|
|||||||
#ifdef ZT_WIN_RUN_IN_CONSOLE
|
#ifdef ZT_WIN_RUN_IN_CONSOLE
|
||||||
bool winRunFromCommandLine = true;
|
bool winRunFromCommandLine = true;
|
||||||
#else
|
#else
|
||||||
bool winRunFromCommandLine = true;
|
bool winRunFromCommandLine = false;
|
||||||
#endif
|
#endif
|
||||||
#endif // __WINDOWS__
|
#endif // __WINDOWS__
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user