Merge "chan_rtp: Accept hostname as well as ip address as destination" into 16

This commit is contained in:
George Joseph 2019-08-22 19:01:49 -05:00 committed by Gerrit Code Review
commit b5eb13c23b
2 changed files with 24 additions and 2 deletions

View File

@ -43,6 +43,7 @@
#include "asterisk/causes.h"
#include "asterisk/format_cache.h"
#include "asterisk/multicast_rtp.h"
#include "asterisk/dns_core.h"
/* Forward declarations */
static struct ast_channel *multicast_rtp_request(const char *type, struct ast_format_cap *cap, const struct ast_assigned_ids *assignedids, const struct ast_channel *requestor, const char *data, int *cause);
@ -293,9 +294,23 @@ static struct ast_channel *unicast_rtp_request(const char *type, struct ast_form
ast_log(LOG_ERROR, "Destination is required for the 'UnicastRTP' channel\n");
goto failure;
}
if (!ast_sockaddr_parse(&address, args.destination, PARSE_PORT_REQUIRE)) {
ast_log(LOG_ERROR, "Destination '%s' could not be parsed\n", args.destination);
goto failure;
int rc;
char *host;
char *port;
rc = ast_sockaddr_split_hostport(args.destination, &host, &port, PARSE_PORT_REQUIRE);
if (!rc) {
ast_log(LOG_ERROR, "Unable to parse destination '%s' into host and port\n", args.destination);
goto failure;
}
rc = ast_dns_resolve_ipv6_and_ipv4(&address, host, port);
if (rc != 0) {
ast_log(LOG_ERROR, "Unable to resolve host '%s'\n", host);
goto failure;
}
}
if (!ast_strlen_zero(args.options)

View File

@ -0,0 +1,7 @@
Subject: chan_rtp
The UnicastRTP channel driver provided by chan_rtp now accepts
"<hostname>:<port>" as an alternative to "<ip_address>:<port>" in the destination.
The first AAAA (preferred) or A record resolved will be used as the destination.
The lookup is synchronous so beware of possible dialplan delays if you specify a
hostname.