Mercurial > hg > nginx-ranges
comparison src/core/ngx_resolver.c @ 554:2b9e388c61f1 NGINX_0_8_23
nginx 0.8.23
*) Security: now SSL/TLS renegotiation is disabled.
Thanks to Maxim Dounin.
*) Bugfix: listen unix domain socket did not inherit while online
upgrade.
*) Bugfix: the "unix:" parameter of the "set_real_ip_from" directive
did not without yet another directive with any IP address.
*) Bugfix: segmentation fault and infinite looping in resolver.
*) Bugfix: in resolver.
Thanks to Artem Bokhan.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Wed, 11 Nov 2009 00:00:00 +0300 |
parents | c04fa65fe604 |
children | 40c366b3535c |
comparison
equal
deleted
inserted
replaced
553:8da5668048b4 | 554:2b9e388c61f1 |
---|---|
462 | 462 |
463 if (rn->waiting) { | 463 if (rn->waiting) { |
464 | 464 |
465 ctx->next = rn->waiting; | 465 ctx->next = rn->waiting; |
466 rn->waiting = ctx; | 466 rn->waiting = ctx; |
467 ctx->state = NGX_AGAIN; | |
467 | 468 |
468 return NGX_AGAIN; | 469 return NGX_AGAIN; |
469 } | 470 } |
470 | 471 |
471 ngx_queue_remove(&rn->queue); | 472 ngx_queue_remove(&rn->queue); |
623 | 624 |
624 if (rn->waiting) { | 625 if (rn->waiting) { |
625 | 626 |
626 ctx->next = rn->waiting; | 627 ctx->next = rn->waiting; |
627 rn->waiting = ctx; | 628 rn->waiting = ctx; |
629 ctx->state = NGX_AGAIN; | |
628 | 630 |
629 /* unlock addr mutex */ | 631 /* unlock addr mutex */ |
630 | 632 |
631 return NGX_OK; | 633 return NGX_OK; |
632 } | 634 } |
1750 query->nqs_hi = 0; query->nqs_lo = 1; | 1752 query->nqs_hi = 0; query->nqs_lo = 1; |
1751 query->nan_hi = 0; query->nan_lo = 0; | 1753 query->nan_hi = 0; query->nan_lo = 0; |
1752 query->nns_hi = 0; query->nns_lo = 0; | 1754 query->nns_hi = 0; query->nns_lo = 0; |
1753 query->nar_hi = 0; query->nar_lo = 0; | 1755 query->nar_hi = 0; query->nar_lo = 0; |
1754 | 1756 |
1755 p += sizeof(ngx_resolver_query_t) + 1 + ctx->name.len + 1; | 1757 p += sizeof(ngx_resolver_query_t) |
1758 + ctx->name.len ? (1 + ctx->name.len + 1) : 1; | |
1756 | 1759 |
1757 qs = (ngx_resolver_qs_t *) p; | 1760 qs = (ngx_resolver_qs_t *) p; |
1758 | 1761 |
1759 /* query type */ | 1762 /* query type */ |
1760 qs->type_hi = 0; qs->type_lo = (u_char) ctx->type; | 1763 qs->type_hi = 0; qs->type_lo = (u_char) ctx->type; |
1895 return NGX_ERROR; | 1898 return NGX_ERROR; |
1896 | 1899 |
1897 done: | 1900 done: |
1898 | 1901 |
1899 if (name == NULL) { | 1902 if (name == NULL) { |
1903 return NGX_OK; | |
1904 } | |
1905 | |
1906 if (len == -1) { | |
1907 name->len = 0; | |
1908 name->data = NULL; | |
1900 return NGX_OK; | 1909 return NGX_OK; |
1901 } | 1910 } |
1902 | 1911 |
1903 dst = ngx_resolver_alloc(r, len); | 1912 dst = ngx_resolver_alloc(r, len); |
1904 if (dst == NULL) { | 1913 if (dst == NULL) { |