summaryrefslogtreecommitdiff
path: root/main/sdp_state.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/sdp_state.c')
-rw-r--r--main/sdp_state.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/main/sdp_state.c b/main/sdp_state.c
index 3a87a81e2..0da93e4ac 100644
--- a/main/sdp_state.c
+++ b/main/sdp_state.c
@@ -150,13 +150,15 @@ static struct ast_rtp_instance *create_rtp(const struct ast_sdp_options *options
{
struct ast_rtp_instance *rtp;
struct ast_rtp_engine_ice *ice;
- struct ast_sockaddr temp_media_address;
static struct ast_sockaddr address_rtp;
- struct ast_sockaddr *media_address = &address_rtp;
+ struct ast_sockaddr *media_address = &address_rtp;
- if (options->bind_rtp_to_media_address && !ast_strlen_zero(options->media_address)) {
- ast_sockaddr_parse(&temp_media_address, options->media_address, 0);
- media_address = &temp_media_address;
+ if (!ast_strlen_zero(options->interface_address)) {
+ if (!ast_sockaddr_parse(&address_rtp, options->interface_address, 0)) {
+ ast_log(LOG_ERROR, "Attempted to bind RTP to invalid media address: %s\n",
+ options->interface_address);
+ return NULL;
+ }
} else {
if (ast_check_ipv6()) {
ast_sockaddr_parse(&address_rtp, "::", 0);
@@ -165,7 +167,8 @@ static struct ast_rtp_instance *create_rtp(const struct ast_sdp_options *options
}
}
- if (!(rtp = ast_rtp_instance_new(options->rtp_engine, sched, media_address, NULL))) {
+ rtp = ast_rtp_instance_new(options->rtp_engine, sched, media_address, NULL);
+ if (!rtp) {
ast_log(LOG_ERROR, "Unable to create RTP instance using RTP engine '%s'\n",
options->rtp_engine);
return NULL;
@@ -204,13 +207,15 @@ static struct ast_rtp_instance *create_rtp(const struct ast_sdp_options *options
static struct sdp_state_udptl *create_udptl(const struct ast_sdp_options *options)
{
struct sdp_state_udptl *udptl;
- struct ast_sockaddr temp_media_address;
static struct ast_sockaddr address_udptl;
- struct ast_sockaddr *media_address = &address_udptl;
+ struct ast_sockaddr *media_address = &address_udptl;
- if (options->bind_udptl_to_media_address && !ast_strlen_zero(options->media_address)) {
- ast_sockaddr_parse(&temp_media_address, options->media_address, 0);
- media_address = &temp_media_address;
+ if (!ast_strlen_zero(options->interface_address)) {
+ if (!ast_sockaddr_parse(&address_udptl, options->interface_address, 0)) {
+ ast_log(LOG_ERROR, "Attempted to bind UDPTL to invalid media address: %s\n",
+ options->interface_address);
+ return NULL;
+ }
} else {
if (ast_check_ipv6()) {
ast_sockaddr_parse(&address_udptl, "::", 0);