summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2015-06-01 11:56:15 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2015-06-01 11:56:15 -0700
commitb3b9af0dd85ac755d41122cf2d0428d7f85e4cce (patch)
tree78322de4c9698da8d5e61381b12dd1c25ed037ec
parentea419c21d0c429cb43b157aa66b8a6845838bdc8 (diff)
downloadinfinitytier-b3b9af0dd85ac755d41122cf2d0428d7f85e4cce.tar.gz
infinitytier-b3b9af0dd85ac755d41122cf2d0428d7f85e4cce.zip
Fix for GitHub issue #170
-rw-r--r--node/Network.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/node/Network.cpp b/node/Network.cpp
index deb05d1c..ab875889 100644
--- a/node/Network.cpp
+++ b/node/Network.cpp
@@ -498,12 +498,11 @@ bool Network::_isAllowed(const Address &peer) const
std::vector<MulticastGroup> Network::_allMulticastGroups() const
{
// Assumes _lock is locked
- std::vector<MulticastGroup> mgs(_myMulticastGroups);
- std::vector<MulticastGroup>::iterator oldend(mgs.end());
- for(std::map< MulticastGroup,uint64_t >::const_iterator i(_multicastGroupsBehindMe.begin());i!=_multicastGroupsBehindMe.end();++i) {
- if (!std::binary_search(mgs.begin(),oldend,i->first))
- mgs.push_back(i->first);
- }
+ std::vector<MulticastGroup> mgs;
+ mgs.reserve(_myMulticastGroups.size() + _multicastGroupsBehindMe.size() + 1);
+ mgs.insert(mgs.end(),_myMulticastGroups.begin(),_myMulticastGroups.end());
+ for(std::map< MulticastGroup,uint64_t >::const_iterator i(_multicastGroupsBehindMe.begin());i!=_multicastGroupsBehindMe.end();++i)
+ mgs.push_back(i->first);
if ((_config)&&(_config->enableBroadcast()))
mgs.push_back(Network::BROADCAST);
std::sort(mgs.begin(),mgs.end());