Fix for GitHub issue #170

This commit is contained in:
Adam Ierymenko 2015-06-01 11:56:15 -07:00
parent ea419c21d0
commit b3b9af0dd8

View File

@ -498,12 +498,11 @@ bool Network::_isAllowed(const Address &peer) const
std::vector<MulticastGroup> Network::_allMulticastGroups() const std::vector<MulticastGroup> Network::_allMulticastGroups() const
{ {
// Assumes _lock is locked // Assumes _lock is locked
std::vector<MulticastGroup> mgs(_myMulticastGroups); std::vector<MulticastGroup> mgs;
std::vector<MulticastGroup>::iterator oldend(mgs.end()); mgs.reserve(_myMulticastGroups.size() + _multicastGroupsBehindMe.size() + 1);
for(std::map< MulticastGroup,uint64_t >::const_iterator i(_multicastGroupsBehindMe.begin());i!=_multicastGroupsBehindMe.end();++i) { mgs.insert(mgs.end(),_myMulticastGroups.begin(),_myMulticastGroups.end());
if (!std::binary_search(mgs.begin(),oldend,i->first)) for(std::map< MulticastGroup,uint64_t >::const_iterator i(_multicastGroupsBehindMe.begin());i!=_multicastGroupsBehindMe.end();++i)
mgs.push_back(i->first); mgs.push_back(i->first);
}
if ((_config)&&(_config->enableBroadcast())) if ((_config)&&(_config->enableBroadcast()))
mgs.push_back(Network::BROADCAST); mgs.push_back(Network::BROADCAST);
std::sort(mgs.begin(),mgs.end()); std::sort(mgs.begin(),mgs.end());