diff --git a/include/tls_session.h b/include/tls_session.h
index d0adb63..4483787 100644
--- a/include/tls_session.h
+++ b/include/tls_session.h
@@ -133,8 +133,6 @@
 
     int maxPayload() const override;
 
-    void waitForReady(const duration& timeout = {});
-
     /// Synchronous writing.
     /// Return a positive number for number of bytes write, or 0 and \a ec set in case of error.
     std::size_t write(const ValueType* data, std::size_t size, std::error_code& ec) override;
diff --git a/src/connectionmanager.cpp b/src/connectionmanager.cpp
index 68f40b1..7c3c8d2 100644
--- a/src/connectionmanager.cpp
+++ b/src/connectionmanager.cpp
@@ -1185,6 +1185,13 @@
                                        vid);
             dinfo->executePendingOperations(vid, nullptr);
         }
+
+        std::unique_lock<std::mutex> lk(dinfo->mtx_);
+        dinfo->info.erase(vid);
+
+        if (dinfo->empty()) {
+            infos_.removeDeviceInfo(dinfo->deviceId);
+        }
     } else {
         // The socket is ready, store it
         if (isDhtRequest) {
diff --git a/src/peer_connection.cpp b/src/peer_connection.cpp
index 1c8ae3e..3fbd820 100644
--- a/src/peer_connection.cpp
+++ b/src/peer_connection.cpp
@@ -382,15 +382,6 @@
     return pimpl_->tls->peerCertificate();
 }
 
-void
-TlsSocketEndpoint::waitForReady(const std::chrono::milliseconds& timeout)
-{
-    if (!pimpl_->tls) {
-        return;
-    }
-    pimpl_->tls->waitForReady(timeout);
-}
-
 int
 TlsSocketEndpoint::waitForData(std::chrono::milliseconds timeout, std::error_code& ec) const
 {
diff --git a/src/peer_connection.h b/src/peer_connection.h
index c6f0197..7d91d04 100644
--- a/src/peer_connection.h
+++ b/src/peer_connection.h
@@ -123,8 +123,6 @@
     }
     int waitForData(std::chrono::milliseconds timeout, std::error_code&) const override;
 
-    void waitForReady(const std::chrono::milliseconds& timeout = {});
-
     void setOnStateChange(OnStateChangeCb&& cb);
     void setOnReady(OnReadyCb&& cb);
 
diff --git a/src/security/tls_session.cpp b/src/security/tls_session.cpp
index de0347f..1d7b24d 100644
--- a/src/security/tls_session.cpp
+++ b/src/security/tls_session.cpp
@@ -1737,24 +1737,6 @@
     return 0;
 }
 
-void
-TlsSession::waitForReady(const duration& timeout)
-{
-    auto ready = [this]() -> bool {
-        auto state = pimpl_->state_.load();
-        return state == TlsSessionState::ESTABLISHED or state == TlsSessionState::SHUTDOWN;
-    };
-    std::unique_lock<std::mutex> lk(pimpl_->stateMutex_);
-    if (timeout == duration::zero())
-        pimpl_->stateCondition_.wait(lk, ready);
-    else
-        pimpl_->stateCondition_.wait_for(lk, timeout, ready);
-
-    if (!ready())
-        throw std::logic_error("Invalid state in TlsSession::waitForReady: "
-                               + std::to_string((int) pimpl_->state_.load()));
-}
-
 int
 TlsSession::waitForData(std::chrono::milliseconds timeout, std::error_code& ec) const
 {
