Merge "chan_rtp: Accept hostname as well as ip address as destination" into 16
This commit is contained in:
commit
b5eb13c23b
|
@ -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)
|
||||
|
|
|
@ -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.
|
Loading…
Reference in New Issue