diff options
author | Kevin Harwell <kharwell@digium.com> | 2017-03-20 13:27:31 -0500 |
---|---|---|
committer | Kevin Harwell <kharwell@digium.com> | 2017-03-22 15:43:33 -0500 |
commit | 9b103e7bea40c300f89de67cc23c1015fc03db76 (patch) | |
tree | 16716cafa1b2b8e8fc2c8d70ff72fd0f63be75f0 /main/asterisk.c | |
parent | 06c996660865e5a5d87aa130b066d214a407b286 (diff) |
rtp_engine: allocate RTP dynamic payloads per session
Dynamic payload types were statically defined in Asterisk. This unfortunately
limited the number of dynamic payloads that could be registered. With this patch
dynamic payload type numbers are now assigned dynamically and per RTP instance.
However, in order to limit any issues where some clients expect the old
statically defined value this patch makes it so the value Asterisk used to pre-
designate is used for the dynamic assignment if available.
An option, "rtp_use_dynamic", has also been added (can be set in asterisk.conf)
that turns the new dynamic behavior on or off. When off it reverts back to using
statically defined payload values. This option defaults to "yes" in Asterisk 15.
ASTERISK-26515 #close
patches:
ASTERISK-26515.diff submitted by jcolp (license 5000
Change-Id: I7653465c5ebeaf968f1a1cc8f3f4f5c4321da7fc
Diffstat (limited to 'main/asterisk.c')
-rw-r--r-- | main/asterisk.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/main/asterisk.c b/main/asterisk.c index 69183c1f3..68859ab2f 100644 --- a/main/asterisk.c +++ b/main/asterisk.c @@ -339,6 +339,7 @@ unsigned int option_dtmfminduration; /*!< Minimum duration of DTMF. */ #if defined(HAVE_SYSINFO) long option_minmemfree; /*!< Minimum amount of free system memory - stop accepting calls if free memory falls below this watermark */ #endif +int ast_option_rtpusedynamic; unsigned int ast_option_rtpptdynamic; /*! @} */ @@ -602,6 +603,7 @@ static char *handle_show_settings(struct ast_cli_entry *e, int cmd, struct ast_c ast_cli(a->fd, " Transmit silence during rec: %s\n", ast_test_flag(&ast_options, AST_OPT_FLAG_TRANSMIT_SILENCE) ? "Enabled" : "Disabled"); ast_cli(a->fd, " Generic PLC: %s\n", ast_test_flag(&ast_options, AST_OPT_FLAG_GENERIC_PLC) ? "Enabled" : "Disabled"); ast_cli(a->fd, " Min DTMF duration:: %u\n", option_dtmfminduration); + ast_cli(a->fd, " RTP use dynamic payloads: %u\n", ast_option_rtpusedynamic); if (ast_option_rtpptdynamic == AST_RTP_PT_LAST_REASSIGN) { ast_cli(a->fd, " RTP dynamic payload types: %u,%u-%u\n", @@ -3499,6 +3501,7 @@ static void ast_readconfig(void) /* Set default value */ option_dtmfminduration = AST_MIN_DTMF_DURATION; + ast_option_rtpusedynamic = 1; ast_option_rtpptdynamic = 35; /* init with buildtime config */ @@ -3655,6 +3658,8 @@ static void ast_readconfig(void) if (sscanf(v->value, "%30u", &option_dtmfminduration) != 1) { option_dtmfminduration = AST_MIN_DTMF_DURATION; } + } else if (!strcasecmp(v->name, "rtp_use_dynamic")) { + ast_option_rtpusedynamic = ast_true(v->value); /* http://www.iana.org/assignments/rtp-parameters * RTP dynamic payload types start at 96 normally; extend down to 0 */ } else if (!strcasecmp(v->name, "rtp_pt_dynamic")) { |