diff --git a/src/CallManager.cpp b/src/CallManager.cpp
index f725d49f8e240fc6d5196e2e2e268cd86ba73cad..0841a079d9d70c6e46052e9f047fc7642ad30090 100644
--- a/src/CallManager.cpp
+++ b/src/CallManager.cpp
@@ -45,8 +45,9 @@ CallManager::CallManager(QObject *parent)
                   nhlog::ui()->debug("WebRTC: call id: {} - sending offer", callid_);
                   emit newMessage(roomid_, CallInvite{callid_, sdp, 0, timeoutms_});
                   emit newMessage(roomid_, CallCandidates{callid_, candidates, 0});
-                  QTimer::singleShot(timeoutms_, this, [this]() {
-                          if (session_.state() == webrtc::State::OFFERSENT) {
+                  std::string callid(callid_);
+                  QTimer::singleShot(timeoutms_, this, [this, callid]() {
+                          if (session_.state() == webrtc::State::OFFERSENT && callid == callid_) {
                                   hangUp(CallHangUp::Reason::InviteTimeOut);
                                   emit ChatPage::instance()->showNotification(
                                     "The remote side failed to pick up.");