From 5f1ba3ea6ff32b9840e182d78921d0f34061946d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Mon, 14 Apr 2014 17:56:23 -0400 Subject: [PATCH] sipvoiplink: lock mutex in getCalls() --- daemon/src/sip/sipvoiplink.cpp | 24 +++++++++++++----------- daemon/src/sip/sipvoiplink.h | 2 +- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/daemon/src/sip/sipvoiplink.cpp b/daemon/src/sip/sipvoiplink.cpp index cfe76ff816..34b3521090 100644 --- a/daemon/src/sip/sipvoiplink.cpp +++ b/daemon/src/sip/sipvoiplink.cpp @@ -732,17 +732,6 @@ bool SIPVoIPLink::getEvent() return handlingEvents_; } -std::vector<Call*> -SIPVoIPLink::getCalls(const std::string &account_id) const -{ - std::vector<Call*> calls; - for (const auto & item : sipCallMap_) { - if (item.second->getAccountId() == account_id) - calls.push_back(item.second); - } - return calls; -} - void SIPVoIPLink::sendRegister(Account& a) { @@ -1327,6 +1316,19 @@ SIPVoIPLink::getCallIDs() return v; } +std::vector<Call*> +SIPVoIPLink::getCalls(const std::string &account_id) const +{ + std::lock_guard<std::mutex> lock(sipCallMapMutex_); + + std::vector<Call*> calls; + for (const auto & item : sipCallMap_) { + if (item.second->getAccountId() == account_id) + calls.push_back(item.second); + } + return calls; +} + void SIPVoIPLink::addSipCall(SIPCall* call) { if (!call) diff --git a/daemon/src/sip/sipvoiplink.h b/daemon/src/sip/sipvoiplink.h index 895df50473..fc0858f599 100644 --- a/daemon/src/sip/sipvoiplink.h +++ b/daemon/src/sip/sipvoiplink.h @@ -313,7 +313,7 @@ class SIPVoIPLink : public VoIPLink { */ AccountMap sipAccountMap_; - std::mutex sipCallMapMutex_; + mutable std::mutex sipCallMapMutex_; SipCallMap sipCallMap_; /** -- GitLab