diff --git a/src/jamidht/p2p.cpp b/src/jamidht/p2p.cpp
index 73c99971b3d3b507352dcabb9f7169677e187781..35ca45ccafb96c4e81d5f00f4e38229d18b4364d 100644
--- a/src/jamidht/p2p.cpp
+++ b/src/jamidht/p2p.cpp
@@ -743,9 +743,11 @@ DhtPeerConnector::Impl::answerToRequest(PeerConnectionMsg&& request,
                                                                    std::move(
                                                                        waitForReadyEndpoints_[idx]));
                 connection->setOnStateChangedCb(
-                    [this, peer_h](const DRing::DataTransferId& id,
-                                   const DRing::DataTransferEventCode& code) {
-                        stateChanged(peer_h, id, code);
+                    [w = weak(), peer_h](const DRing::DataTransferId& id,
+                                         const DRing::DataTransferEventCode& code) {
+                        if (auto sthis = w.lock()) {
+                            sthis->stateChanged(peer_h, id, code);
+                        }
                     });
                 connection->attachOutputStream(std::make_shared<FtpServer>(accountId, peer_h));
                 {