From a4d32f4013a4fa4f5f64782d97aaf103ab566e51 Mon Sep 17 00:00:00 2001 From: Donat Zenichev Date: Wed, 7 Jun 2023 10:24:59 +0200 Subject: [PATCH] MT#57437 Upstream: added `lock(mutex)` calls in order to avoid crash Backport from the upstream to add `lock(mutex)` calls in order to avoid crash. Upstream commit: 0af0c924a8fc9638c5b18a4d5799a085ea8132bc Change-Id: I022b09d2827b41f0785a9c0568c334b8a2af108f --- core/AmB2BMedia.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/core/AmB2BMedia.cpp b/core/AmB2BMedia.cpp index f1296876..731c0652 100644 --- a/core/AmB2BMedia.cpp +++ b/core/AmB2BMedia.cpp @@ -1196,6 +1196,9 @@ void AmB2BMedia::setRtpLogger(msg_logger* _logger) } void AmB2BMedia::setRelayDTMFReceiving(bool enabled) { + + AmLock lock(mutex); + DBG("relay_streams.size() = %zd, audio_streams.size() = %zd\n", relay_streams.size(), audio.size()); for (RelayStreamIterator j = relay_streams.begin(); j != relay_streams.end(); j++) { DBG("force_receive_dtmf %sabled for [%p]\n", enabled?"en":"dis", &(*j)->a); @@ -1217,7 +1220,8 @@ void AmB2BMedia::setRelayDTMFReceiving(bool enabled) { /** set receving of RTP/relay streams (not receiving=drop incoming packets) */ void AmB2BMedia::setReceiving(bool receiving_a, bool receiving_b) { - AmLock lock(mutex); // TODO: is this necessary? + + AmLock lock(mutex); DBG("relay_streams.size() = %zd, audio_streams.size() = %zd\n", relay_streams.size(), audio.size()); for (RelayStreamIterator j = relay_streams.begin(); j != relay_streams.end(); j++) { @@ -1237,6 +1241,9 @@ void AmB2BMedia::setReceiving(bool receiving_a, bool receiving_b) { } void AmB2BMedia::pauseRelay() { + + AmLock lock(mutex); + DBG("relay_streams.size() = %zd, audio_streams.size() = %zd\n", relay_streams.size(), audio.size()); relay_paused = true; for (RelayStreamIterator j = relay_streams.begin(); j != relay_streams.end(); j++) { @@ -1251,6 +1258,9 @@ void AmB2BMedia::pauseRelay() { } void AmB2BMedia::restartRelay() { + + AmLock lock(mutex); + DBG("relay_streams.size() = %zd, audio_streams.size() = %zd\n", relay_streams.size(), audio.size()); relay_paused = false; for (RelayStreamIterator j = relay_streams.begin(); j != relay_streams.end(); j++) { @@ -1277,6 +1287,9 @@ void AudioStreamData::debug() // print debug info void AmB2BMedia::debug() { + + AmLock lock(mutex); + // walk through all the streams DBG("B2B media session %p ('%s' <-> '%s'):", this,