diff options
Diffstat (limited to 'res/res_pjsip_sdp_rtp.c')
-rw-r--r-- | res/res_pjsip_sdp_rtp.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/res/res_pjsip_sdp_rtp.c b/res/res_pjsip_sdp_rtp.c index aad6bb88f..d8b94df9f 100644 --- a/res/res_pjsip_sdp_rtp.c +++ b/res/res_pjsip_sdp_rtp.c @@ -1180,10 +1180,14 @@ static int create_outgoing_sdp_stream(struct ast_sip_session *session, struct as max_packet_size = ast_format_get_maximum_ms(format); } ao2_ref(format, -1); + + if (media->desc.fmt_count == PJMEDIA_MAX_SDP_FMT) { + break; + } } /* Add non-codec formats */ - if (media_type != AST_MEDIA_TYPE_VIDEO) { + if (media_type != AST_MEDIA_TYPE_VIDEO && media->desc.fmt_count < PJMEDIA_MAX_SDP_FMT) { for (index = 1LL; index <= AST_RTP_MAX; index <<= 1) { if (!(noncodec & index)) { continue; @@ -1205,6 +1209,10 @@ static int create_outgoing_sdp_stream(struct ast_sip_session *session, struct as attr = pjmedia_sdp_attr_create(pool, "fmtp", pj_cstr(&stmp, tmp)); media->attr[media->attr_count++] = attr; } + + if (media->desc.fmt_count == PJMEDIA_MAX_SDP_FMT) { + break; + } } } |