diff options
author | Richard Mudgett <rmudgett@digium.com> | 2015-07-27 19:10:11 -0500 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2015-07-30 17:11:58 -0500 |
commit | e2d5d4db3561b3d2b1a43999b3e6e60c734de349 (patch) | |
tree | 552b012ae6e39ee3b072aa5a73fdb2a68d25ec2f | |
parent | bc1eae55cb818c9d7963549ba9927a06c6b6f1ac (diff) |
rtp_engine.h: No sense allowing payload types larger than RFC allows.
* Tweaked add_static_payload() to not use magic numbers.
Change-Id: I1719ff0f6d3ce537a91572501eae5bcd912a420b
-rw-r--r-- | include/asterisk/rtp_engine.h | 11 | ||||
-rw-r--r-- | main/rtp_engine.c | 18 |
2 files changed, 15 insertions, 14 deletions
diff --git a/include/asterisk/rtp_engine.h b/include/asterisk/rtp_engine.h index d99852dca..d6a9be574 100644 --- a/include/asterisk/rtp_engine.h +++ b/include/asterisk/rtp_engine.h @@ -78,14 +78,13 @@ extern "C" { #include "asterisk/stasis.h" #include "asterisk/vector.h" -/* Maximum number of payloads supported */ -#if defined(LOW_MEMORY) +/*! Maximum number of payload types RTP can support. */ #define AST_RTP_MAX_PT 128 -#else -#define AST_RTP_MAX_PT 196 -#endif -/* Maximum number of generations */ +/*! First dynamic RTP payload type */ +#define AST_RTP_PT_FIRST_DYNAMIC 96 + +/*! Maximum number of generations */ #define AST_RED_MAX_GENERATION 5 /*! diff --git a/main/rtp_engine.c b/main/rtp_engine.c index 069b2fc60..6e647d381 100644 --- a/main/rtp_engine.c +++ b/main/rtp_engine.c @@ -1740,22 +1740,24 @@ static void set_next_mime_type(struct ast_format *format, int rtp_code, const ch static void add_static_payload(int map, struct ast_format *format, int rtp_code) { int x; + + ast_assert(map < ARRAY_LEN(static_RTP_PT)); + ast_rwlock_wrlock(&static_RTP_PT_lock); if (map < 0) { /* find next available dynamic payload slot */ - for (x = 96; x < 127; x++) { + for (x = AST_RTP_PT_FIRST_DYNAMIC; x < AST_RTP_MAX_PT; ++x) { if (!static_RTP_PT[x].asterisk_format && !static_RTP_PT[x].rtp_code) { map = x; break; } } - } - - if (map < 0) { - ast_log(LOG_WARNING, "No Dynamic RTP mapping available for format %s\n", - ast_format_get_name(format)); - ast_rwlock_unlock(&static_RTP_PT_lock); - return; + if (map < 0) { + ast_log(LOG_WARNING, "No Dynamic RTP mapping available for format %s\n", + ast_format_get_name(format)); + ast_rwlock_unlock(&static_RTP_PT_lock); + return; + } } if (format) { |