diff --git a/src/ice_transport.cpp b/src/ice_transport.cpp index 3db6a92559e80a2f26f8f14de8e64b5528511c67..e3e963e6ca6354fc13016f9827231adaf2fef26f 100644 --- a/src/ice_transport.cpp +++ b/src/ice_transport.cpp @@ -127,9 +127,9 @@ public: // reflexive candidates using STUN config. void addServerReflexiveCandidates(const std::vector<std::pair<IpAddr, IpAddr>>& addrList); // Generate server reflexive candidates using the published (DHT/Account) address - const std::vector<std::pair<IpAddr, IpAddr>> setupGenericReflexiveCandidates(); + std::vector<std::pair<IpAddr, IpAddr>> setupGenericReflexiveCandidates(); // Generate server reflexive candidates using UPNP mappings. - const std::vector<std::pair<IpAddr, IpAddr>> setupUpnpReflexiveCandidates(); + std::vector<std::pair<IpAddr, IpAddr>> setupUpnpReflexiveCandidates(); void setDefaultRemoteAddress(unsigned comp_id, const IpAddr& addr); const IpAddr& getDefaultRemoteAddress(unsigned comp_id) const; bool handleEvents(unsigned max_msec); @@ -842,8 +842,8 @@ IceTransport::Impl::addServerReflexiveCandidates( auto& stun = config_.stun_tp[config_.stun_tp_cnt - 1]; for (unsigned compIdx = 0; compIdx < component_count_; compIdx++) { - auto localAddr = addrList[compIdx].first; - auto publicAddr = addrList[compIdx].second; + auto& localAddr = addrList[compIdx].first; + auto& publicAddr = addrList[compIdx].second; pj_sockaddr_cp(&stun.cfg.user_mapping[compIdx].local_addr, localAddr.pjPtr()); pj_sockaddr_cp(&stun.cfg.user_mapping[compIdx].mapped_addr, publicAddr.pjPtr()); @@ -863,7 +863,7 @@ IceTransport::Impl::addServerReflexiveCandidates( assert(stun.cfg.user_mapping_cnt < PJ_ICE_MAX_COMP); } -const std::vector<std::pair<IpAddr, IpAddr>> +std::vector<std::pair<IpAddr, IpAddr>> IceTransport::Impl::setupGenericReflexiveCandidates() { std::vector<std::pair<IpAddr, IpAddr>> addrList; @@ -876,6 +876,7 @@ IceTransport::Impl::setupGenericReflexiveCandidates() // candidates and set to active otherwise. if (accountLocalAddr_ and accountPublicAddr_) { + addrList.reserve(component_count_); for (unsigned compIdx = 0; compIdx < component_count_; compIdx++) { // For TCP, the type is set to active, because most likely the incoming // connection will be blocked by the NAT. @@ -899,7 +900,7 @@ IceTransport::Impl::setupGenericReflexiveCandidates() return addrList; } -const std::vector<std::pair<IpAddr, IpAddr>> +std::vector<std::pair<IpAddr, IpAddr>> IceTransport::Impl::setupUpnpReflexiveCandidates() { // Add UPNP server reflexive candidates if available. @@ -919,6 +920,7 @@ IceTransport::Impl::setupUpnpReflexiveCandidates() std::vector<std::pair<IpAddr, IpAddr>> addrList; unsigned compId = 1; + addrList.reserve(upnpMappings_.size()); for (auto const& [_, map] : upnpMappings_) { assert(map.getMapKey()); IpAddr localAddr {map.getInternalAddress()}; @@ -973,7 +975,7 @@ IceTransport::Impl::onReceiveData(unsigned comp_id, void* pkt, pj_size_t size) io.cb((uint8_t*) pkt, size); } else { std::error_code ec; - auto err = peerChannels_.at(comp_id - 1).write((char*) pkt, size, ec); + auto err = peerChannels_.at(comp_id - 1).write((const char*) pkt, size, ec); if (err < 0) { JAMI_ERR("[ice:%p] rx: channel is closed", this); }