diff --git a/daemon/sdp.c b/daemon/sdp.c index ef00efa0e..94652b51e 100644 --- a/daemon/sdp.c +++ b/daemon/sdp.c @@ -1959,20 +1959,24 @@ int sdp_replace(struct sdp_chopper *chop, GQueue *sessions, struct call_monologu else chopper_append_c(chop, "a=inactive\r\n"); - if (MEDIA_ISSET(call_media, RTCP_MUX) && flags->opmode == OP_ANSWER) { - chopper_append_c(chop, "a=rtcp:"); - chopper_append_printf(chop, "%u", ps->selected_sfd->socket.local.port); - chopper_append_c(chop, "\r\na=rtcp-mux\r\n"); - ps_rtcp = NULL; - } - else if (ps_rtcp && !flags->ice_force_relay) { - chopper_append_c(chop, "a=rtcp:"); - chopper_append_printf(chop, "%u", ps_rtcp->selected_sfd->socket.local.port); - if (!MEDIA_ISSET(call_media, RTCP_MUX)) - chopper_append_c(chop, "\r\n"); - else + if (call_media->protocol && call_media->protocol->rtp) { + if (MEDIA_ISSET(call_media, RTCP_MUX) && flags->opmode == OP_ANSWER) { + chopper_append_c(chop, "a=rtcp:"); + chopper_append_printf(chop, "%u", ps->selected_sfd->socket.local.port); chopper_append_c(chop, "\r\na=rtcp-mux\r\n"); + ps_rtcp = NULL; + } + else if (ps_rtcp && !flags->ice_force_relay) { + chopper_append_c(chop, "a=rtcp:"); + chopper_append_printf(chop, "%u", ps_rtcp->selected_sfd->socket.local.port); + if (!MEDIA_ISSET(call_media, RTCP_MUX)) + chopper_append_c(chop, "\r\n"); + else + chopper_append_c(chop, "\r\na=rtcp-mux\r\n"); + } } + else + ps_rtcp = NULL; insert_crypto(call_media, chop); insert_dtls(call_media, chop);