diff --git a/src/jamidht/p2p.cpp b/src/jamidht/p2p.cpp
index e3b2d532bd7a94519e175cce706849f07e6a83ed..111db3e560c0b6f6a7760fbd8bd74d2c535d3756 100644
--- a/src/jamidht/p2p.cpp
+++ b/src/jamidht/p2p.cpp
@@ -635,23 +635,33 @@ DhtPeerConnector::Impl::onTurnPeerConnection(const IpAddr& peer_addr)
     }
 
     JAMI_DBG() << account << "[CNX] start TLS session over TURN socket";
-    dht::InfoHash peer_h;
-    tls_turn_ep_[peer_addr] = std::make_unique<TlsTurnEndpoint>(
-        *turn_ep, account.identity(), account.dhParams(),
-        [&, this] (const dht::crypto::Certificate& cert) { return validatePeerCertificate(cert, peer_h); });
-
+    auto peer_h = std::make_shared<dht::InfoHash>();
+    tls_turn_ep_[peer_addr] =
+    std::make_unique<TlsTurnEndpoint>(*turn_ep,
+                                      account.identity(),
+                                      account.dhParams(),
+                                      [peer_h, this] (const dht::crypto::Certificate& cert) {
+        return validatePeerCertificate(cert, *peer_h);
+    });
 
-    tls_turn_ep_[peer_addr]->setOnStateChange([this, peer_addr, peer_h] (tls::TlsSessionState state) {
+    tls_turn_ep_[peer_addr]->setOnStateChange([this, peer_addr, peer_h] (tls::TlsSessionState state)
+    {
         if (state == tls::TlsSessionState::SHUTDOWN) {
             JAMI_WARN() << "[CNX] TLS connection failure from peer " << peer_addr.toString(true, true);
             tls_turn_ep_.erase(peer_addr);
         } else if (state == tls::TlsSessionState::ESTABLISHED) {
-            JAMI_DBG() << account << "[CNX] Accepted TLS-TURN connection from RingID " << peer_h;
-            connectedPeers_.emplace(peer_addr, tls_turn_ep_[peer_addr]->peerCertificate().getId());
-            auto connection = std::make_unique<PeerConnection>(
-                [] {}, peer_addr.toString(), std::move(tls_turn_ep_[peer_addr]));
-            connection->attachOutputStream(std::make_shared<FtpServer>(account.getAccountID(), peer_h.toString()));
-            servers_.emplace(std::make_pair(peer_h, peer_addr), std::move(connection));
+            if (peer_h) {
+                 JAMI_DBG() << account << "[CNX] Accepted TLS-TURN connection from RingID " << *peer_h;
+                 connectedPeers_
+                .emplace(peer_addr, tls_turn_ep_[peer_addr]->peerCertificate().getId());
+                 auto connection =
+                 std::make_unique<PeerConnection>([] {},
+                                                 peer_addr.toString(),
+                                                 std::move(tls_turn_ep_[peer_addr]));
+                 connection->attachOutputStream(std::make_shared<FtpServer>(account.getAccountID(),
+                                                                            peer_h->toString()));
+                 servers_.emplace(std::make_pair(*peer_h, peer_addr), std::move(connection));
+            }
             tls_turn_ep_.erase(peer_addr);
         }
     });