diff --git a/src/jamidht/p2p.cpp b/src/jamidht/p2p.cpp
index 08489b100352f0e83ad0bca1442347fd6dd1a43d..e3b2d532bd7a94519e175cce706849f07e6a83ed 100644
--- a/src/jamidht/p2p.cpp
+++ b/src/jamidht/p2p.cpp
@@ -858,15 +858,16 @@ DhtPeerConnector::Impl::answerToRequest(PeerConnectionMsg&& request,
         std::unique_ptr<AbstractSocketEndpoint> peer_ep =
             std::make_unique<IceSocketEndpoint>(ice, false);
         JAMI_DBG() << account << "[CNX] start TLS session";
-        auto ph = peer_h;
         if (hasPubIp) ice->setSlaveSession();
 
         auto idx = std::make_pair(peer_h, ice->getRemoteAddress(0));
         auto it = waitForReadyEndpoints_.emplace(
             idx,
             std::make_unique<TlsSocketEndpoint>(*peer_ep, account.identity(), account.dhParams(),
-                [&, this](const dht::crypto::Certificate &cert) {
-                    return validatePeerCertificate(cert, ph);
+                [peer_h, this](const dht::crypto::Certificate &cert) {
+                    dht::InfoHash peer_h_found;
+                    return validatePeerCertificate(cert, peer_h_found)
+                        and peer_h_found == peer_h;
                 }
             )
         );