summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/res_pjsip_sdp_rtp.c10
-rw-r--r--third-party/pjproject/patches/config_site.h6
2 files changed, 15 insertions, 1 deletions
diff --git a/res/res_pjsip_sdp_rtp.c b/res/res_pjsip_sdp_rtp.c
index 037b8e45f..3df9df030 100644
--- a/res/res_pjsip_sdp_rtp.c
+++ b/res/res_pjsip_sdp_rtp.c
@@ -1183,10 +1183,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;
@@ -1208,6 +1212,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;
+ }
}
}
diff --git a/third-party/pjproject/patches/config_site.h b/third-party/pjproject/patches/config_site.h
index 0694f120e..564959d84 100644
--- a/third-party/pjproject/patches/config_site.h
+++ b/third-party/pjproject/patches/config_site.h
@@ -57,3 +57,9 @@
/* Defaults too low for WebRTC */
#define PJ_ICE_MAX_CAND 32
#define PJ_ICE_MAX_CHECKS (PJ_ICE_MAX_CAND * 2)
+
+/* Increase limits to allow more formats */
+#define PJMEDIA_MAX_SDP_FMT 64
+#define PJMEDIA_MAX_SDP_BANDW 4
+#define PJMEDIA_MAX_SDP_ATTR (PJMEDIA_MAX_SDP_FMT*2 + 4)
+#define PJMEDIA_MAX_SDP_MEDIA 16