diff --git a/src/sip/sipvoiplink.cpp b/src/sip/sipvoiplink.cpp
index b0772831d698ac8aff3ace5792062a45fc93a1bf..214c47028d1f429bdc5e103d16b738d906fea373 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;
     }