]> git.kaiwu.me - nginx.git/commitdiff
axe r->in_addr
authorIgor Sysoev <igor@sysoev.ru>
Mon, 23 Feb 2009 21:05:10 +0000 (21:05 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Mon, 23 Feb 2009 21:05:10 +0000 (21:05 +0000)
src/http/modules/ngx_http_userid_filter_module.c
src/http/ngx_http_core_module.c
src/http/ngx_http_request.c
src/http/ngx_http_request.h

index 5082c740fb830770e7cc20d7c44afc6b5d54bf4d..5ffb1d02b4de82d01477b7401faf023b69a517e3 100644 (file)
@@ -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);
index 22a81dbb0beea9cd3dbc8b3f9b46d2a5b4caeab5..bf5d483900b80f9c3f35ae5456f0cf548652ea47 100644 (file)
@@ -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;
 
index f03b574f90bc1515ad5f94f3a3c0c2bca43f7710..5f5c7074438986f54effcf5aef192bd749696d1b 100644 (file)
@@ -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;
         }
     }
index 1add80da65dfc3e31342891d5bd7853050cddf45..ab693b729a8c24dc02cf91f64e02bb01d08526ea 100644 (file)
@@ -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;