diff --git a/daemon/sdp.c b/daemon/sdp.c index 05e7302b1..d1fdf7c8d 100644 --- a/daemon/sdp.c +++ b/daemon/sdp.c @@ -2433,7 +2433,7 @@ static void insert_crypto1(GString *s, struct call_media *media, struct crypto_p p, &state, &save); p += g_base64_encode_close(0, p, &state, &save); - if (!flags->sdes_pad) { + if (!flags || !flags->sdes_pad) { // truncate trailing == while (p > b64_buf && p[-1] == '=') p--; @@ -2444,7 +2444,7 @@ static void insert_crypto1(GString *s, struct call_media *media, struct crypto_p g_string_append(s, cps->params.crypto_suite->name); g_string_append(s, " inline:"); g_string_append_len(s, b64_buf, p - b64_buf); - if (flags->sdes_lifetime) + if (flags && flags->sdes_lifetime) g_string_append(s, "|2^31"); if (cps->params.mki_len) { ull = 0; @@ -2465,10 +2465,10 @@ static void insert_crypto(GString *s, struct call_media *media, struct sdp_ng_fl insert_crypto1(s, media, l->data, flags); } static void insert_rtcp_attr(GString *s, struct packet_stream *ps, const struct sdp_ng_flags *flags) { - if (flags->no_rtcp_attr) + if (flags && flags->no_rtcp_attr) return; g_string_append_printf(s, "a=rtcp:%u", ps->selected_sfd->socket.local.port); - if (flags->full_rtcp_attr) { + if (flags && flags->full_rtcp_attr) { char buf[64]; int len; if (!is_addr_unspecified(&flags->parsed_media_address)) @@ -2551,7 +2551,7 @@ struct packet_stream *print_rtcp(GString *s, struct call_media *media, GList *rt if (proto_is_rtp(media->protocol)) { if (MEDIA_ISSET(media, RTCP_MUX) - && (flags->opmode == OP_ANSWER || flags->opmode == OP_OTHER + && (!flags || flags->opmode == OP_ANSWER || flags->opmode == OP_OTHER || flags->opmode == OP_PUBLISH || ((flags->opmode == OP_OFFER || flags->opmode == OP_REQUEST) && flags->rtcp_mux_require))) @@ -2560,7 +2560,7 @@ struct packet_stream *print_rtcp(GString *s, struct call_media *media, GList *rt g_string_append(s, "a=rtcp-mux\r\n"); ps_rtcp = NULL; } - else if (ps_rtcp && flags->ice_option != ICE_FORCE_RELAY) { + else if (ps_rtcp && (!flags || flags->ice_option != ICE_FORCE_RELAY)) { insert_rtcp_attr(s, ps_rtcp, flags); if (MEDIA_ISSET(media, RTCP_MUX)) g_string_append(s, "a=rtcp-mux\r\n");