diff --git a/daemon/call.c b/daemon/call.c index 74b96bc29..caea5be1a 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -2646,27 +2646,35 @@ static void __media_init_from_flags(struct call_media *other_media, struct call_ 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 0c8338730..463ef91e2 100644 --- a/daemon/rtcp.c +++ b/daemon/rtcp.c @@ -1319,6 +1319,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