diff --git a/daemon/call.c b/daemon/call.c index f6c349d57..c423e6a87 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -2925,27 +2925,35 @@ static int __media_init_from_flags(struct call_media *other_media, struct call_m if (flags) { switch (flags->media_echo) { case MEO_FWD: - MEDIA_SET(media, ECHO); + if (media) { + MEDIA_SET(media, ECHO); + MEDIA_CLEAR(media, BLACKHOLE); + } MEDIA_SET(other_media, BLACKHOLE); - MEDIA_CLEAR(media, BLACKHOLE); MEDIA_CLEAR(other_media, ECHO); break; case MEO_BKW: - MEDIA_SET(media, BLACKHOLE); + if (media) { + MEDIA_SET(media, BLACKHOLE); + MEDIA_CLEAR(media, ECHO); + } MEDIA_SET(other_media, ECHO); - MEDIA_CLEAR(media, ECHO); MEDIA_CLEAR(other_media, BLACKHOLE); break; case MEO_BOTH: - MEDIA_SET(media, ECHO); + if (media) { + MEDIA_SET(media, ECHO); + MEDIA_CLEAR(media, BLACKHOLE); + } MEDIA_SET(other_media, ECHO); - MEDIA_CLEAR(media, BLACKHOLE); MEDIA_CLEAR(other_media, BLACKHOLE); break; case MEO_BLACKHOLE: - MEDIA_SET(media, BLACKHOLE); + if (media) { + MEDIA_SET(media, BLACKHOLE); + MEDIA_CLEAR(media, ECHO); + } MEDIA_SET(other_media, BLACKHOLE); - MEDIA_CLEAR(media, ECHO); MEDIA_CLEAR(other_media, ECHO); case MEO_DEFAULT: break; diff --git a/daemon/rtcp.c b/daemon/rtcp.c index f39f4a646..d599cd8a0 100644 --- a/daemon/rtcp.c +++ b/daemon/rtcp.c @@ -1322,6 +1322,8 @@ static void transcode_rr(struct rtcp_process_ctx *ctx, struct report_block *rr) struct ssrc_ctx *input_ctx = get_ssrc_ctx(map_ctx->ssrc_map_out, ctx->mp->media_out->monologue->ssrc_hash, SSRC_DIR_INPUT, NULL); + if (!input_ctx) + return; // substitute our own values