diff --git a/src/ice_transport.cpp b/src/ice_transport.cpp index cedb39f6b2e04b5107ea562e8ff2d282f35a65fc..c44be21aa363b21c67bd1dd5cbc89013f88c2b5d 100644 --- a/src/ice_transport.cpp +++ b/src/ice_transport.cpp @@ -82,16 +82,21 @@ class IceLock public: IceLock(pj_ice_strans* strans) - : lk_(pj_ice_strans_get_grp_lock(strans)) - { + : lk_(pj_ice_strans_get_grp_lock(strans)) { lock(); } - ~IceLock() { unlock(); } + ~IceLock() { + unlock(); + } - void lock() { pj_grp_lock_acquire(lk_); } + void lock() { + pj_grp_lock_acquire(lk_); + } - void unlock() { pj_grp_lock_release(lk_); } + void unlock() { + pj_grp_lock_release(lk_); + } }; class IceTransport::Impl @@ -376,9 +381,6 @@ IceTransport::Impl::~Impl() } JAMI_DBG("[ice:%p] done destroying", this); - - if (scb) - scb(); } void @@ -509,6 +511,8 @@ IceTransport::Impl::initIceInstance(const IceTransportOptions& options) std::lock_guard lk(tr->sendDataMutex_); tr->destroying_ = true; tr->waitDataCv_.notify_all(); + if (tr->scb) + tr->scb(); } else { JAMI_WARN("null IceTransport"); } @@ -694,9 +698,9 @@ IceTransport::Impl::checkEventQueue(int maxEventToPoll) void IceTransport::Impl::onComplete(pj_ice_strans*, pj_ice_strans_op op, pj_status_t status) { - const char* opname = op == PJ_ICE_STRANS_OP_INIT ? "initialization" - : op == PJ_ICE_STRANS_OP_NEGOTIATION ? "negotiation" - : "unknown_op"; + const char* opname = op == PJ_ICE_STRANS_OP_INIT + ? "initialization" + : op == PJ_ICE_STRANS_OP_NEGOTIATION ? "negotiation" : "unknown_op"; const bool done = status == PJ_SUCCESS; if (done) { @@ -744,7 +748,7 @@ IceTransport::Impl::link() const std::ostringstream out; for (unsigned strm = 1; strm <= streamsCount_ * compCountPerStream_; strm++) { auto absIdx = strm; - auto comp = (strm + 1) / compCountPerStream_; + auto comp = (strm+1)/compCountPerStream_; auto laddr = getLocalAddress(absIdx); auto raddr = getRemoteAddress(absIdx); @@ -766,6 +770,7 @@ IceTransport::Impl::setInitiatorSession() JAMI_DBG("[ice:%p] as master", this); initiatorSession_ = true; if (_isInitialized()) { + auto status = pj_ice_strans_change_role(icest_, PJ_ICE_SESS_ROLE_CONTROLLING); if (status != PJ_SUCCESS) { last_errmsg_ = sip_utils::sip_strerror(status); @@ -783,6 +788,7 @@ IceTransport::Impl::setSlaveSession() JAMI_DBG("[ice:%p] as slave", this); initiatorSession_ = false; if (_isInitialized()) { + auto status = pj_ice_strans_change_role(icest_, PJ_ICE_SESS_ROLE_CONTROLLED); if (status != PJ_SUCCESS) { last_errmsg_ = sip_utils::sip_strerror(status); @@ -1096,8 +1102,7 @@ IceTransport::Impl::onReceiveData(unsigned comp_id, void* pkt, pj_size_t size) jami_tracepoint_if_enabled(ice_transport_recv, reinterpret_cast<uint64_t>(this), - comp_id, - size, + comp_id, size, getRemoteAddress(comp_id).toString().c_str()); if (size == 0) return; @@ -1125,8 +1130,8 @@ IceTransport::Impl::_waitForInitialization(std::chrono::milliseconds timeout) IceLock lk(icest_); if (not iceCV_.wait_for(lk, timeout, [this] { - return threadTerminateFlags_ or _isInitialized() or _isFailed(); - })) { + return threadTerminateFlags_ or _isInitialized() or _isFailed(); + })) { JAMI_WARN("[ice:%p] waitForInitialization: timeout", this); return false; } @@ -1151,7 +1156,8 @@ IceTransport::initIceInstance(const IceTransportOptions& options) { pimpl_->initIceInstance(options); - jami_tracepoint(ice_transport_context, reinterpret_cast<uint64_t>(this)); + jami_tracepoint(ice_transport_context, + reinterpret_cast<uint64_t>(this)); } bool @@ -1686,9 +1692,7 @@ IceTransport::send(unsigned compId, const unsigned char* buf, size_t len) jami_tracepoint(ice_transport_send, reinterpret_cast<uint64_t>(this), - compId, - len, - remote.toString().c_str()); + compId, len, remote.toString().c_str()); auto status = pj_ice_strans_sendto2(pimpl_->icest_, compId, @@ -1703,7 +1707,8 @@ IceTransport::send(unsigned compId, const unsigned char* buf, size_t len) // NOTE; because we are in TCP, the sent size will count the header (2 // bytes length). pimpl_->waitDataCv_.wait(dlk, [&] { - return pimpl_->lastSentLen_ >= static_cast<pj_size_t>(len) or pimpl_->destroying_; + return pimpl_->lastSentLen_ >= static_cast<pj_size_t>(len) + or pimpl_->destroying_; }); pimpl_->lastSentLen_ = 0; } else if (status != PJ_SUCCESS && status != PJ_EPENDING) {