From 88a4a3b1bae97548142b73031ff415db6ebd31d0 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 11 Apr 2017 08:47:02 -0700 Subject: Pass tptr on leave. --- node/Network.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'node/Network.cpp') diff --git a/node/Network.cpp b/node/Network.cpp index 3c607b28..b7f25f7f 100644 --- a/node/Network.cpp +++ b/node/Network.cpp @@ -729,7 +729,8 @@ Network::~Network() char n[128]; if (_destroyed) { - RR->node->configureVirtualNetworkPort((void *)0,_id,&_uPtr,ZT_VIRTUAL_NETWORK_CONFIG_OPERATION_DESTROY,&ctmp); + // This is done in Node::leave() so we can pass tPtr + //RR->node->configureVirtualNetworkPort((void *)0,_id,&_uPtr,ZT_VIRTUAL_NETWORK_CONFIG_OPERATION_DESTROY,&ctmp); Utils::snprintf(n,sizeof(n),"networks.d/%.16llx.conf",_id); RR->node->dataStoreDelete((void *)0,n); } else { @@ -993,6 +994,9 @@ void Network::multicastUnsubscribe(const MulticastGroup &mg) uint64_t Network::handleConfigChunk(void *tPtr,const uint64_t packetId,const Address &source,const Buffer &chunk,unsigned int ptr) { + if (_destroyed) + return 0; + const unsigned int start = ptr; ptr += 8; // skip network ID, which is already obviously known @@ -1140,6 +1144,9 @@ uint64_t Network::handleConfigChunk(void *tPtr,const uint64_t packetId,const Add int Network::setConfiguration(void *tPtr,const NetworkConfig &nconf,bool saveToDisk) { + if (_destroyed) + return 0; + // _lock is NOT locked when this is called try { if ((nconf.issuedTo != RR->identity.address())||(nconf.networkId != _id)) @@ -1190,6 +1197,9 @@ int Network::setConfiguration(void *tPtr,const NetworkConfig &nconf,bool saveToD void Network::requestConfiguration(void *tPtr) { + if (_destroyed) + return; + /* ZeroTier addresses can't begin with 0xff, so this is used to mark controllerless * network IDs. Controllerless network IDs only support unicast IPv6 using the 6plane * addressing scheme and have the following format: 0xffSSSSEEEE000000 where SSSS -- cgit v1.2.3