aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2009-02-23 21:05:10 +0000
committerIgor Sysoev <igor@sysoev.ru>2009-02-23 21:05:10 +0000
commit2d95c82f919a597918918714cda59b5784a12edc (patch)
tree8371951893384c3c16f13e8777066ac45b2159c4
parentb5a17c727ca81a99aabf88a41e9a2d5b61ad313b (diff)
downloadnginx-2d95c82f919a597918918714cda59b5784a12edc.tar.gz
nginx-2d95c82f919a597918918714cda59b5784a12edc.zip
axe r->in_addr
-rw-r--r--src/http/modules/ngx_http_userid_filter_module.c37
-rw-r--r--src/http/ngx_http_core_module.c5
-rw-r--r--src/http/ngx_http_request.c1
-rw-r--r--src/http/ngx_http_request.h1
4 files changed, 32 insertions, 12 deletions
diff --git a/src/http/modules/ngx_http_userid_filter_module.c b/src/http/modules/ngx_http_userid_filter_module.c
index 5082c740f..5ffb1d02b 100644
--- a/src/http/modules/ngx_http_userid_filter_module.c
+++ b/src/http/modules/ngx_http_userid_filter_module.c
@@ -360,10 +360,16 @@ static ngx_int_t
ngx_http_userid_set_uid(ngx_http_request_t *r, ngx_http_userid_ctx_t *ctx,
ngx_http_userid_conf_t *conf)
{
- u_char *cookie, *p;
- size_t len;
- ngx_str_t src, dst;
- ngx_table_elt_t *set_cookie, *p3p;
+ u_char *cookie, *p;
+ size_t len;
+ ngx_str_t src, dst;
+ ngx_table_elt_t *set_cookie, *p3p;
+ ngx_connection_t *c;
+ struct sockaddr_in *sin;
+#if (NGX_HAVE_INET6)
+ struct sockaddr_in6 *sin6;
+#endif
+
/*
* TODO: in the threaded mode the sequencers should be in TLS and their
* ranges should be divided between threads
@@ -388,7 +394,28 @@ ngx_http_userid_set_uid(ngx_http_request_t *r, ngx_http_userid_ctx_t *ctx,
return NGX_ERROR;
}
- ctx->uid_set[0] = htonl(r->in_addr);
+ c = r->connection;
+
+ switch (c->local_sockaddr->sa_family) {
+
+#if (NGX_HAVE_INET6)
+ case AF_INET6:
+ sin6 = (struct sockaddr_in6 *) c->local_sockaddr;
+
+ p = (u_char *) &ctx->uid_set[0];
+
+ *p++ = sin6->sin6_addr.s6_addr[12];
+ *p++ = sin6->sin6_addr.s6_addr[13];
+ *p++ = sin6->sin6_addr.s6_addr[14];
+ *p = sin6->sin6_addr.s6_addr[15];
+
+ break;
+#endif
+ default: /* AF_INET */
+ sin = (struct sockaddr_in *) c->local_sockaddr;
+ ctx->uid_set[0] = sin->sin_addr.s_addr;
+ break;
+ }
} else {
ctx->uid_set[0] = htonl(conf->service);
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index 22a81dbb0..bf5d48390 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -1776,7 +1776,6 @@ ngx_http_server_addr(ngx_http_request_t *r, ngx_str_t *s)
{
socklen_t len;
ngx_connection_t *c;
- struct sockaddr_in *sin;
u_char sa[NGX_SOCKADDRLEN];
c = r->connection;
@@ -1799,9 +1798,6 @@ ngx_http_server_addr(ngx_http_request_t *r, ngx_str_t *s)
ngx_memcpy(c->local_sockaddr, &sa, len);
}
- sin = (struct sockaddr_in *) c->local_sockaddr;
- r->in_addr = sin->sin_addr.s_addr;
-
if (s == NULL) {
return NGX_OK;
}
@@ -2065,7 +2061,6 @@ ngx_http_subrequest(ngx_http_request_t *r,
c->data = sr;
}
- sr->in_addr = r->in_addr;
sr->port = r->port;
sr->port_text = r->port_text;
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
index f03b574f9..5f5c70744 100644
--- a/src/http/ngx_http_request.c
+++ b/src/http/ngx_http_request.c
@@ -373,7 +373,6 @@ ngx_http_init_request(ngx_event_t *rev)
default: /* AF_INET */
addr = port->addrs;
addr_conf = &addr[0].conf;
- r->in_addr = addr[0].addr;
break;
}
}
diff --git a/src/http/ngx_http_request.h b/src/http/ngx_http_request.h
index 1add80da6..ab693b729 100644
--- a/src/http/ngx_http_request.h
+++ b/src/http/ngx_http_request.h
@@ -384,7 +384,6 @@ struct ngx_http_request_s {
ngx_http_post_subrequest_t *post_subrequest;
ngx_http_posted_request_t *posted_requests;
- uint32_t in_addr;
ngx_uint_t port;
ngx_str_t *port_text; /* ":80" */
ngx_http_virtual_names_t *virtual_names;