# HG changeset patch # User Roman Arutyunyan # Date 1553103119 -10800 # Node ID 8be88b22fe81e7d4ba942bd2649bedf95ea36cfc # Parent 4f9b72a229c190f2d25d12f3d4b09299660ceee0 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. diff --git a/src/core/ngx_inet.c b/src/core/ngx_inet.c --- a/src/core/ngx_inet.c +++ b/src/core/ngx_inet.c @@ -1080,24 +1080,15 @@ ngx_inet_resolve_host(ngx_pool_t *pool, /* MP: ngx_shared_palloc() */ - /* AF_INET addresses first */ - for (rp = res; rp != NULL; rp = rp->ai_next) { - if (rp->ai_family != AF_INET) { - continue; - } + switch (rp->ai_family) { - if (ngx_inet_add_addr(pool, u, rp->ai_addr, rp->ai_addrlen, n) - != NGX_OK) - { - goto failed; - } - } + case AF_INET: + case AF_INET6: + break; - for (rp = res; rp != NULL; rp = rp->ai_next) { - - if (rp->ai_family != AF_INET6) { + default: continue; }