diff --git a/src/connectivity/connectionmanager.cpp b/src/connectivity/connectionmanager.cpp index 1162debb59e87d19319b3fb6917ad4570aaab2cf..f0861277e6d37caef015ee10e8799d1dfb6dcf31 100644 --- a/src/connectivity/connectionmanager.cpp +++ b/src/connectivity/connectionmanager.cpp @@ -90,8 +90,6 @@ public: info->tls_->shutdown(); if (info->socket_) info->socket_->shutdown(); - if (info->ice_) - info->ice_->cancelOperations(); if (info->waitForAnswer_) info->waitForAnswer_->cancel(); } @@ -1060,8 +1058,6 @@ ConnectionManager::Impl::addNewMultiplexedSocket(const CallbackId& id, const std ids = std::move(info->cbIds_); info->socket_->shutdown(); } - if (info->ice_) - info->ice_->cancelOperations(); } for (const auto& cbId : ids) for (const auto& pending : sthis->extractPendingCallbacks(cbId.first, cbId.second)) @@ -1141,8 +1137,6 @@ ConnectionManager::closeConnectionsWith(const std::string& peerUri) pimpl_->removeUnusedConnections(deviceId); } for (auto& info : connInfos) { - if (info->ice_) - info->ice_->cancelOperations(); if (info->socket_) info->socket_->shutdown(); if (info->waitForAnswer_) diff --git a/src/connectivity/ice_transport.cpp b/src/connectivity/ice_transport.cpp index 848e9b25d22709e6ea59222f8186a8a9a514a2a7..33529561cddaa7308eebd1da2ce360469aabf799 100644 --- a/src/connectivity/ice_transport.cpp +++ b/src/connectivity/ice_transport.cpp @@ -236,6 +236,9 @@ public: { for (auto& c : peerChannels_) c.stop(); + std::lock_guard<std::mutex> lk(sendDataMutex_); + destroying_ = true; + waitDataCv_.notify_all(); } }; @@ -510,9 +513,6 @@ IceTransport::Impl::initIceInstance(const IceTransportOptions& options) icecb.on_destroy = [](pj_ice_strans* ice_st) { if (auto* tr = static_cast<Impl*>(pj_ice_strans_get_user_data(ice_st))) { tr->cancelOperations(); // Avoid upper layer to manage this ; Stop read operations - std::lock_guard lk(tr->sendDataMutex_); - tr->destroying_ = true; - tr->waitDataCv_.notify_all(); // Stop write operations } else { JAMI_WARN("null IceTransport"); } @@ -1341,7 +1341,6 @@ IceTransport::startIce(const SDP& sdp) void IceTransport::cancelOperations() { - isCancelled_ = true; pimpl_->cancelOperations(); } diff --git a/src/connectivity/ice_transport.h b/src/connectivity/ice_transport.h index 50d71e2c8700942db23f2e8273f60f9e006c2b7c..ad5be7d42d9c49b9780bf123043b69087b37d1ca 100644 --- a/src/connectivity/ice_transport.h +++ b/src/connectivity/ice_transport.h @@ -246,7 +246,6 @@ public: private: class Impl; - bool isCancelled_ {false}; std::unique_ptr<Impl> pimpl_; };