From 4fbd077128f451eceacdcd7048b344c1aad9c124 Mon Sep 17 00:00:00 2001 From: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com> Date: Mon, 26 Mar 2018 14:05:50 -0400 Subject: [PATCH] incoming call: fix crash when remote sdp is not available nullptr access to detect if it an audio call only due to missing remote sdp. In such case the incoming call is considered as audio only. Change-Id: I70e5d45aaa047f4683f4277536eb851e5b222e6b --- src/sip/sipvoiplink.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/sip/sipvoiplink.cpp b/src/sip/sipvoiplink.cpp index b0772831d6..214c47028d 100644 --- a/src/sip/sipvoiplink.cpp +++ b/src/sip/sipvoiplink.cpp @@ -275,15 +275,18 @@ transaction_request_cb(pjsip_rx_data *rdata) bool hasVideo = false; bool hasAudio = false; - auto pj_str_video = pj_str((char*) "video"); - auto pj_str_audio = pj_str((char*) "audio"); - for (decltype(r_sdp->media_count) i=0 ; i < r_sdp->media_count; i++) - if ( pj_strcmp(&r_sdp->media[i]->desc.media, &pj_str_video) == 0 ) - hasVideo = true; - else if ( pj_strcmp(&r_sdp->media[i]->desc.media, &pj_str_audio) == 0 ) - hasAudio = true; - - auto call = account->newIncomingCall(remote_user, {{"AUDIO_ONLY", ((not hasVideo and hasAudio) ? "true" : "false") }}); + if (r_sdp) { + auto pj_str_video = pj_str((char*) "video"); + auto pj_str_audio = pj_str((char*) "audio"); + for (decltype(r_sdp->media_count) i=0 ; i < r_sdp->media_count; i++) { + if (pj_strcmp(&r_sdp->media[i]->desc.media, &pj_str_video) == 0) + hasVideo = true; + else if (pj_strcmp(&r_sdp->media[i]->desc.media, &pj_str_audio) == 0) + hasAudio = true; + } + } + + auto call = account->newIncomingCall(remote_user, {{"AUDIO_ONLY", (hasVideo ? "false" : "true") }}); if (!call) { return PJ_FALSE; } -- GitLab