diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2018-12-06 12:47:58 -0800 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2018-12-06 12:47:58 -0800 |
| commit | e6f9ab929df19ba667441b005ae2b9771922a92c (patch) | |
| tree | 802a618a96d18b30ac22c13e00000e6aeafe7f73 /node/Multicaster.cpp | |
| parent | 18d1772bb472770517dd5f863849d0d08defd71c (diff) | |
| download | infinitytier-e6f9ab929df19ba667441b005ae2b9771922a92c.tar.gz infinitytier-e6f9ab929df19ba667441b005ae2b9771922a92c.zip | |
More speed stuff.
Diffstat (limited to 'node/Multicaster.cpp')
| -rw-r--r-- | node/Multicaster.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/node/Multicaster.cpp b/node/Multicaster.cpp index b2a5a205..2b5fb041 100644 --- a/node/Multicaster.cpp +++ b/node/Multicaster.cpp @@ -444,15 +444,17 @@ void Multicaster::_add(void *tPtr,int64_t now,uint64_t nwid,const MulticastGroup if (member == RR->identity.address()) return; - for(std::vector<MulticastGroupMember>::iterator m(gs.members.begin());m!=gs.members.end();++m) { + std::vector<MulticastGroupMember>::iterator m(std::lower_bound(gs.members.begin(),gs.members.end(),member)); + if (m != gs.members.end()) { if (m->address == member) { m->timestamp = now; return; } + gs.members.insert(m,MulticastGroupMember(member,now)); + } else { + gs.members.push_back(MulticastGroupMember(member,now)); } - gs.members.push_back(MulticastGroupMember(member,now)); - for(std::list<OutboundMulticast>::iterator tx(gs.txQueue.begin());tx!=gs.txQueue.end();) { if (tx->atLimit()) gs.txQueue.erase(tx++); |
