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_;
 };