From 50eff71bfafbd277e8daf71b40c0c4e82495458d Mon Sep 17 00:00:00 2001 From: csoler Date: Sun, 14 Jun 2015 12:22:49 +0000 Subject: [PATCH] removed possibility to access invalidated iterator in grouter git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@8435 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- libretroshare/src/grouter/p3grouter.cc | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/libretroshare/src/grouter/p3grouter.cc b/libretroshare/src/grouter/p3grouter.cc index 48ac8f3ae..e1495fc11 100644 --- a/libretroshare/src/grouter/p3grouter.cc +++ b/libretroshare/src/grouter/p3grouter.cc @@ -656,13 +656,6 @@ void p3GRouter::removeVirtualPeer(const TurtleFileHash& hash,const TurtleVirtual } it->second.removeVirtualPeer(virtual_peer_id) ; - if(it->second.virtual_peers.empty()) - { -#ifdef GROUTER_DEBUG - std::cerr << " last virtual peer removed. Also deleting hash entry." << std::endl; -#endif - _tunnels.erase(it) ; - } #ifdef GROUTER_DEBUG std::cerr << " setting tunnel status in pending message." << std::endl; #endif @@ -670,6 +663,15 @@ void p3GRouter::removeVirtualPeer(const TurtleFileHash& hash,const TurtleVirtual for(std::map::iterator it2(_pending_messages.begin());it2!=_pending_messages.end();++it2) if(it2->second.tunnel_hash == hash && it->second.virtual_peers.empty()) it2->second.tunnel_status = RS_GROUTER_TUNNEL_STATUS_PENDING ; + + if(it->second.virtual_peers.empty()) + { +#ifdef GROUTER_DEBUG + std::cerr << " last virtual peer removed. Also deleting hash entry." << std::endl; +#endif + _tunnels.erase(it) ; + } + } void p3GRouter::connectToTurtleRouter(p3turtle *pt)