use sin6_addr.s6_addr instead of "(u_char *) & .sin6_addr"
diff --git a/src/core/ngx_inet.c b/src/core/ngx_inet.c index 326383b..7dfd341 100644 --- a/src/core/ngx_inet.c +++ b/src/core/ngx_inet.c
@@ -221,7 +221,7 @@ text[n++] = '['; } - n = ngx_inet6_ntop((u_char *) &sin6->sin6_addr, &text[n], len); + n = ngx_inet6_ntop(sin6->sin6_addr.s6_addr, &text[n], len); if (port) { n = ngx_sprintf(&text[1 + n], "]:%d", @@ -771,7 +771,7 @@ u->host.len = len; u->host.data = host; - if (ngx_inet6_addr(host, len, (u_char *) &sin6->sin6_addr) != NGX_OK) { + if (ngx_inet6_addr(host, len, sin6->sin6_addr.s6_addr) != NGX_OK) { u->err = "invalid IPv6 address"; return NGX_ERROR; }
diff --git a/src/http/ngx_http_variables.c b/src/http/ngx_http_variables.c index b25e648..a8f5d96 100644 --- a/src/http/ngx_http_variables.c +++ b/src/http/ngx_http_variables.c
@@ -887,7 +887,7 @@ v->valid = 1; v->no_cacheable = 0; v->not_found = 0; - v->data = (u_char *) &sin6->sin6_addr; + v->data = sin6->sin6_addr.s6_addr; break; #endif