diff --git a/src/connectivity/security/tls_session.cpp b/src/connectivity/security/tls_session.cpp index f783c91830415e650339ba966f984767747856dc..da2551556f377c153972331f522e5821eb492737 100644 --- a/src/connectivity/security/tls_session.cpp +++ b/src/connectivity/security/tls_session.cpp @@ -368,6 +368,14 @@ TlsSession::TlsSessionImpl::~TlsSessionImpl() state_ = TlsSessionState::SHUTDOWN; stateCondition_.notify_all(); rxCv_.notify_all(); + { + std::lock_guard<std::mutex> lock(requestsMtx_); + // requests_ store a shared_ptr, so we need to cancel requests + // to not be stuck in verifyCertificateWrapper + for (auto& request : requests_) + request->cancel(); + requests_.clear(); + } thread_.join(); if (not transport_->isReliable()) transport_->setOnRecv(nullptr);