mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-03 03:20:57 +00:00
chan_rtp: Accept hostname as well as ip address as destination
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. Change-Id: Ie6f95b983a8792bf0dacc64c7953a41032dba677
This commit is contained in:
@@ -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)
|
||||
|
7
doc/CHANGES-staging/chan_rtp.txt
Normal file
7
doc/CHANGES-staging/chan_rtp.txt
Normal 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.
|
Reference in New Issue
Block a user