Bug 1237299: addedd missing address family to DNS lookup for proxies
--- a/media/mtransport/third_party/nICEr/src/net/nr_proxy_tunnel.c
+++ b/media/mtransport/third_party/nICEr/src/net/nr_proxy_tunnel.c
@@ -262,17 +262,17 @@ abort:
}
int nr_socket_proxy_tunnel_connect(void *obj, nr_transport_addr *addr)
{
int r, _status;
int has_addr;
nr_socket_proxy_tunnel *sock = (nr_socket_proxy_tunnel*)obj;
nr_proxy_tunnel_config *config = sock->config;
- nr_transport_addr proxy_addr;
+ nr_transport_addr proxy_addr, local_addr;
nr_resolver_resource resource;
if ((r=nr_transport_addr_copy(&sock->remote_addr, addr))) {
ABORT(r);
}
assert(config->proxy_host);
@@ -288,16 +288,32 @@ int nr_socket_proxy_tunnel_connect(void
}
if (!has_addr) {
resource.domain_name=config->proxy_host;
resource.port=config->proxy_port;
resource.stun_turn=NR_RESOLVE_PROTOCOL_TURN;
resource.transport_protocol=IPPROTO_TCP;
+ if ((r=nr_socket_getaddr(sock->inner, &local_addr))) {
+ r_log(LOG_GENERIC,LOG_ERR,"nr_socket_proxy_tunnel_connect failed to get local address");
+ ABORT(r);
+ }
+
+ switch(local_addr.ip_version) {
+ case NR_IPV4:
+ resource.address_family=AF_INET;
+ break;
+ case NR_IPV6:
+ resource.address_family=AF_INET6;
+ break;
+ default:
+ ABORT(R_BAD_ARGS);
+ }
+
r_log(LOG_GENERIC,LOG_DEBUG,"nr_socket_proxy_tunnel_connect: nr_resolver_resolve");
if ((r=nr_resolver_resolve(config->resolver, &resource,
nr_socket_proxy_tunnel_resolved_cb, (void *)sock, &sock->resolver_handle))) {
r_log(LOG_GENERIC,LOG_ERR,"Could not invoke DNS resolver");
ABORT(r);
}
ABORT(R_WOULDBLOCK);