From 761d38e61f6f687913c315446b7511c5f80d019d Mon Sep 17 00:00:00 2001 From: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com> Date: Tue, 20 Oct 2015 10:15:35 -0400 Subject: [PATCH] rtp: fix RtpSession::restartSender() Calling this API causes a race condition with RtpSession::start(). The former needs the latter to be run first, this was not enforced, causing a crash by nullptr access on socketPair_ member. This patch checks for a non-nullptr socketPair_ to procceed the restart. Issue: #81987 Change-Id: I20886fe70398f018621aade1c7bac3ff15ef9055 --- src/media/audio/audio_rtp_session.cpp | 4 ++++ src/media/video/video_rtp_session.cpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/media/audio/audio_rtp_session.cpp b/src/media/audio/audio_rtp_session.cpp index 7d44261dde..afd9590d1b 100644 --- a/src/media/audio/audio_rtp_session.cpp +++ b/src/media/audio/audio_rtp_session.cpp @@ -392,6 +392,10 @@ void AudioRtpSession::restartSender() { std::lock_guard<std::recursive_mutex> lock(mutex_); + // ensure that start has been called before restart + if (not socketPair_) + return; + startSender(); } diff --git a/src/media/video/video_rtp_session.cpp b/src/media/video/video_rtp_session.cpp index 4a1571104a..219d4da360 100644 --- a/src/media/video/video_rtp_session.cpp +++ b/src/media/video/video_rtp_session.cpp @@ -114,6 +114,10 @@ VideoRtpSession::restartSender() { std::lock_guard<std::recursive_mutex> lock(mutex_); + // ensure that start has been called before restart + if (not socketPair_) + return; + startSender(); setupVideoPipeline(); } -- GitLab