diff --git a/daemon/sdp.c b/daemon/sdp.c index 46715e17a..5b8f26198 100644 --- a/daemon/sdp.c +++ b/daemon/sdp.c @@ -1996,20 +1996,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, "%hu", ps->sfd->fd.localport); - 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, "%hu", ps_rtcp->sfd->fd.localport); - 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, "%hu", ps->sfd->fd.localport); 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, "%hu", ps_rtcp->sfd->fd.localport); + 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);