diff --git a/daemon/call.c b/daemon/call.c index 4c7610529..d6f8080de 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -6164,7 +6164,8 @@ bool monologue_transform(struct call_monologue *ml, sdp_ng_flags *flags, medias_ if (!codec_handler_transform(m, &media->codecs)) return false; - __init_streams(m, NULL, flags); + if (!__init_streams(m, NULL, flags)) + return false; } return true; diff --git a/daemon/media_player.c b/daemon/media_player.c index 3f90f548b..e9e27fe2d 100644 --- a/daemon/media_player.c +++ b/daemon/media_player.c @@ -1172,7 +1172,8 @@ void media_player_set_media(struct media_player *mp, struct call_media *media) { } if (!mp->ssrc_out || mp->ssrc_out->h.ssrc != mp->ssrc) { struct ssrc_entry_call *ssrc_ctx = get_ssrc(mp->ssrc, &media->ssrc_hash_out); - ssrc_ctx->next_rtcp = rtpe_now; + if (ssrc_ctx) + ssrc_ctx->next_rtcp = rtpe_now; mp->ssrc_out = ssrc_ctx; } } diff --git a/daemon/rtcp.c b/daemon/rtcp.c index c8fbdfc07..8afdcb230 100644 --- a/daemon/rtcp.c +++ b/daemon/rtcp.c @@ -1313,6 +1313,8 @@ static void transcode_rr(struct rtcp_process_ctx *ctx, struct report_block *rr) // reverse SSRC mapping struct ssrc_entry_call *map_ctx = get_ssrc(ctx->scratch.rr.ssrc, &ctx->mp->media->ssrc_hash_out); + if (!map_ctx) + return; rr->ssrc = htonl(map_ctx->ssrc_map_out); if (!ctx->mp->media_out)