Mercurial > hg > nginx-vendor-current
diff src/core/ngx_resolver.c @ 678:981b4c44593b NGINX_1_3_2
nginx 1.3.2
*) Change: the "single" parameter of the "keepalive" directive is now
ignored.
*) Change: SSL compression is now disabled when using all versions of
OpenSSL, including ones prior to 1.0.0.
*) Feature: it is now possible to use the "ip_hash" directive to balance
IPv6 clients.
*) Feature: the $status variable can now be used not only in the
"log_format" directive.
*) Bugfix: a segmentation fault might occur in a worker process on
shutdown if the "resolver" directive was used.
*) Bugfix: a segmentation fault might occur in a worker process if the
ngx_http_mp4_module was used.
*) Bugfix: in the ngx_http_mp4_module.
*) Bugfix: a segmentation fault might occur in a worker process if
conflicting wildcard server names were used.
*) Bugfix: nginx might be terminated abnormally on a SIGBUS signal on
ARM platform.
*) Bugfix: an alert "sendmsg() failed (9: Bad file number)" on HP-UX
while reconfiguration.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Tue, 26 Jun 2012 00:00:00 +0400 |
parents | bfa81a0490a2 |
children | 660139fd80ca |
line wrap: on
line diff
--- a/src/core/ngx_resolver.c +++ b/src/core/ngx_resolver.c @@ -96,7 +96,7 @@ ngx_resolver_create(ngx_conf_t *cf, ngx_ { 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_ 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)); - - uc->sockaddr = u.addrs->sockaddr; - uc->socklen = u.addrs->socklen; - uc->server = u.addrs->name; + ngx_memzero(uc, u.naddrs * sizeof(ngx_udp_connection_t)); + + 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; @@ -977,12 +979,11 @@ ngx_resolver_resend(ngx_resolver_t *r, n if (rn->waiting) { - if (ngx_resolver_send_query(r, rn) == NGX_OK) { - - rn->expire = now + r->resend_timeout; - - ngx_queue_insert_head(queue, &rn->queue); - } + (void) ngx_resolver_send_query(r, rn); + + rn->expire = now + r->resend_timeout; + + ngx_queue_insert_head(queue, q); continue; }