Mercurial > hg > nginx-vendor-1-0
comparison src/http/ngx_http_core_module.c @ 462:dcb6b5f9d526 NGINX_0_7_43
nginx 0.7.43
*) Bugfix: a request was handled incorrectly, if a "root" directive
used variables; the bug had appeared in 0.7.42.
*) Bugfix: if a server listened on wildcard address, then the
$server_addr variable value was "0.0.0.0"; the bug had appeared in
0.7.36.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Wed, 18 Mar 2009 00:00:00 +0300 |
parents | bb941a2996a6 |
children | c8cfb6c462ef |
comparison
equal
deleted
inserted
replaced
461:47877bb9e445 | 462:dcb6b5f9d526 |
---|---|
1686 } | 1686 } |
1687 | 1687 |
1688 last = ngx_copy(path->data, clcf->root.data, clcf->root.len); | 1688 last = ngx_copy(path->data, clcf->root.data, clcf->root.len); |
1689 | 1689 |
1690 } else { | 1690 } else { |
1691 if (ngx_http_script_run(r, path, clcf->root_lengths->elts, ++reserved, | 1691 reserved += alias ? 1 : r->uri.len + 1; |
1692 | |
1693 if (ngx_http_script_run(r, path, clcf->root_lengths->elts, reserved, | |
1692 clcf->root_values->elts) | 1694 clcf->root_values->elts) |
1693 == NULL) | 1695 == NULL) |
1694 { | 1696 { |
1695 return NULL; | 1697 return NULL; |
1696 } | 1698 } |
1787 | 1789 |
1788 | 1790 |
1789 ngx_int_t | 1791 ngx_int_t |
1790 ngx_http_server_addr(ngx_http_request_t *r, ngx_str_t *s) | 1792 ngx_http_server_addr(ngx_http_request_t *r, ngx_str_t *s) |
1791 { | 1793 { |
1792 socklen_t len; | 1794 socklen_t len; |
1793 ngx_connection_t *c; | 1795 ngx_uint_t addr; |
1794 u_char sa[NGX_SOCKADDRLEN]; | 1796 ngx_connection_t *c; |
1797 u_char sa[NGX_SOCKADDRLEN]; | |
1798 struct sockaddr_in *sin; | |
1799 #if (NGX_HAVE_INET6) | |
1800 ngx_uint_t i; | |
1801 struct sockaddr_in6 *sin6; | |
1802 #endif | |
1795 | 1803 |
1796 c = r->connection; | 1804 c = r->connection; |
1797 | 1805 |
1798 if (c->local_sockaddr == NULL) { | 1806 switch (c->local_sockaddr->sa_family) { |
1807 | |
1808 #if (NGX_HAVE_INET6) | |
1809 case AF_INET6: | |
1810 sin6 = (struct sockaddr_in6 *) c->local_sockaddr; | |
1811 | |
1812 for (addr = 0, i = 0; addr == 0 && i < 16; i++) { | |
1813 addr |= sin6->sin6_addr.s6_addr[i]; | |
1814 } | |
1815 | |
1816 break; | |
1817 #endif | |
1818 | |
1819 default: /* AF_INET */ | |
1820 sin = (struct sockaddr_in *) c->local_sockaddr; | |
1821 addr = sin->sin_addr.s_addr; | |
1822 break; | |
1823 } | |
1824 | |
1825 if (addr == 0) { | |
1799 | 1826 |
1800 len = NGX_SOCKADDRLEN; | 1827 len = NGX_SOCKADDRLEN; |
1801 | 1828 |
1802 if (getsockname(c->fd, (struct sockaddr *) &sa, &len) == -1) { | 1829 if (getsockname(c->fd, (struct sockaddr *) &sa, &len) == -1) { |
1803 ngx_connection_error(c, ngx_socket_errno, "getsockname() failed"); | 1830 ngx_connection_error(c, ngx_socket_errno, "getsockname() failed"); |