fix $server_addr for wildcard listen, the has been introduced in r2513

This commit is contained in:
Igor Sysoev 2009-03-18 12:23:57 +00:00
parent f76a6c2244
commit 3658a5bdc6
2 changed files with 29 additions and 6 deletions

View File

@ -1791,13 +1791,38 @@ ngx_http_auth_basic_user(ngx_http_request_t *r)
ngx_int_t
ngx_http_server_addr(ngx_http_request_t *r, ngx_str_t *s)
{
socklen_t len;
ngx_connection_t *c;
u_char sa[NGX_SOCKADDRLEN];
socklen_t len;
ngx_uint_t addr;
ngx_connection_t *c;
u_char sa[NGX_SOCKADDRLEN];
struct sockaddr_in *sin;
#if (NGX_HAVE_INET6)
ngx_uint_t i;
struct sockaddr_in6 *sin6;
#endif
c = r->connection;
if (c->local_sockaddr == NULL) {
switch (c->local_sockaddr->sa_family) {
#if (NGX_HAVE_INET6)
case AF_INET6:
sin6 = (struct sockaddr_in6 *) c->local_sockaddr;
for (addr = 0, i = 0; addr == 0 && i < 16; i++) {
addr |= sin6->sin6_addr.s6_addr[i];
}
break;
#endif
default: /* AF_INET */
sin = (struct sockaddr_in *) c->local_sockaddr;
addr = sin->sin_addr.s_addr;
break;
}
if (addr == 0) {
len = NGX_SOCKADDRLEN;

View File

@ -310,8 +310,6 @@ ngx_http_init_request(ngx_event_t *rev)
* is required to determine a server address
*/
c->local_sockaddr = NULL;
if (ngx_http_server_addr(r, NULL) != NGX_OK) {
ngx_http_close_connection(c);
return;