Mercurial > hg > nginx
comparison src/core/ngx_resolver.c @ 4684:f5c2c9d656f9
When "resolver" is configured with a domain name, only the first
resolved address was used. Now all addresses will be used.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Mon, 18 Jun 2012 12:46:05 +0000 |
parents | 84d8e60b65f0 |
children | dd63abf20ba7 |
comparison
equal
deleted
inserted
replaced
4683:84d8e60b65f0 | 4684:f5c2c9d656f9 |
---|---|
94 ngx_resolver_t * | 94 ngx_resolver_t * |
95 ngx_resolver_create(ngx_conf_t *cf, ngx_str_t *names, ngx_uint_t n) | 95 ngx_resolver_create(ngx_conf_t *cf, ngx_str_t *names, ngx_uint_t n) |
96 { | 96 { |
97 ngx_str_t s; | 97 ngx_str_t s; |
98 ngx_url_t u; | 98 ngx_url_t u; |
99 ngx_uint_t i; | 99 ngx_uint_t i, j; |
100 ngx_resolver_t *r; | 100 ngx_resolver_t *r; |
101 ngx_pool_cleanup_t *cln; | 101 ngx_pool_cleanup_t *cln; |
102 ngx_udp_connection_t *uc; | 102 ngx_udp_connection_t *uc; |
103 | 103 |
104 cln = ngx_pool_cleanup_add(cf->pool, 0); | 104 cln = ngx_pool_cleanup_add(cf->pool, 0); |
182 } | 182 } |
183 | 183 |
184 return NULL; | 184 return NULL; |
185 } | 185 } |
186 | 186 |
187 uc = ngx_array_push(&r->udp_connections); | 187 uc = ngx_array_push_n(&r->udp_connections, u.naddrs); |
188 if (uc == NULL) { | 188 if (uc == NULL) { |
189 return NULL; | 189 return NULL; |
190 } | 190 } |
191 | 191 |
192 ngx_memzero(uc, sizeof(ngx_udp_connection_t)); | 192 ngx_memzero(uc, u.naddrs * sizeof(ngx_udp_connection_t)); |
193 | 193 |
194 uc->sockaddr = u.addrs->sockaddr; | 194 for (j = 0; j < u.naddrs; j++) { |
195 uc->socklen = u.addrs->socklen; | 195 uc[j].sockaddr = u.addrs[j].sockaddr; |
196 uc->server = u.addrs->name; | 196 uc[j].socklen = u.addrs[j].socklen; |
197 uc[j].server = u.addrs[j].name; | |
198 } | |
197 } | 199 } |
198 | 200 |
199 return r; | 201 return r; |
200 } | 202 } |
201 | 203 |