From 2c49af818bba9559d977731fa20682781a7f69d0 Mon Sep 17 00:00:00 2001 From: Ruslan Ermilov Date: Mon, 18 Jun 2012 12:46:05 +0000 Subject: [PATCH] When "resolver" is configured with a domain name, only the first resolved address was used. Now all addresses will be used. --- src/core/ngx_resolver.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/core/ngx_resolver.c b/src/core/ngx_resolver.c index 53fbbf92a..3e75e05a3 100644 --- a/src/core/ngx_resolver.c +++ b/src/core/ngx_resolver.c @@ -96,7 +96,7 @@ ngx_resolver_create(ngx_conf_t *cf, ngx_str_t *names, ngx_uint_t n) { ngx_str_t s; ngx_url_t u; - ngx_uint_t i; + ngx_uint_t i, j; ngx_resolver_t *r; ngx_pool_cleanup_t *cln; ngx_udp_connection_t *uc; @@ -184,16 +184,18 @@ ngx_resolver_create(ngx_conf_t *cf, ngx_str_t *names, ngx_uint_t n) return NULL; } - uc = ngx_array_push(&r->udp_connections); + uc = ngx_array_push_n(&r->udp_connections, u.naddrs); if (uc == NULL) { return NULL; } - ngx_memzero(uc, sizeof(ngx_udp_connection_t)); + ngx_memzero(uc, u.naddrs * sizeof(ngx_udp_connection_t)); - uc->sockaddr = u.addrs->sockaddr; - uc->socklen = u.addrs->socklen; - uc->server = u.addrs->name; + for (j = 0; j < u.naddrs; j++) { + uc[j].sockaddr = u.addrs[j].sockaddr; + uc[j].socklen = u.addrs[j].socklen; + uc[j].server = u.addrs[j].name; + } } return r;