summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Arutyunyan <arut@nginx.com>2019-03-20 20:31:59 +0300
committerRoman Arutyunyan <arut@nginx.com>2019-03-20 20:31:59 +0300
commitb92e8ffa130366b0181c34f95376a56245cf6414 (patch)
treeb8e9ea9bc68508d9c35038455b48fdf4180db2df
parent4e17b93eb6787e99a4023f20f8c391284f86bbf3 (diff)
downloadnginx-b92e8ffa130366b0181c34f95376a56245cf6414.tar.gz
Removed sorting of getaddrinfo() results.
Previously the ngx_inet_resolve_host() function sorted addresses in a way that IPv4 addresses came before IPv6 addresses. This was implemented in eaf95350d75c (1.3.10) along with the introduction of getaddrinfo() which could resolve host names to IPv6 addresses. Since the "listen" directive only used the first address, sorting allowed to preserve "listen" compatibility with the previous behavior and with the behavior of nginx built without IPv6 support. Now "listen" uses all resolved addresses which makes sorting pointless.
-rw-r--r--src/core/ngx_inet.c19
1 files changed, 5 insertions, 14 deletions
diff --git a/src/core/ngx_inet.c b/src/core/ngx_inet.c
index d935fbb67..dbb9ff22b 100644
--- a/src/core/ngx_inet.c
+++ b/src/core/ngx_inet.c
@@ -1080,24 +1080,15 @@ ngx_inet_resolve_host(ngx_pool_t *pool, ngx_url_t *u)
/* MP: ngx_shared_palloc() */
- /* AF_INET addresses first */
-
for (rp = res; rp != NULL; rp = rp->ai_next) {
- if (rp->ai_family != AF_INET) {
- continue;
- }
-
- if (ngx_inet_add_addr(pool, u, rp->ai_addr, rp->ai_addrlen, n)
- != NGX_OK)
- {
- goto failed;
- }
- }
+ switch (rp->ai_family) {
- for (rp = res; rp != NULL; rp = rp->ai_next) {
+ case AF_INET:
+ case AF_INET6:
+ break;
- if (rp->ai_family != AF_INET6) {
+ default:
continue;
}