Mercurial > hg > nginx
changeset 7430:286ae954009d
Geo: fixed handling of AF_UNIX client addresses (ticket #1684).
Previously, AF_UNIX client addresses were handled as AF_INET, leading
to unexpected results.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Fri, 14 Dec 2018 18:11:06 +0300 |
parents | e573d74299a0 |
children | 294162223c7c |
files | src/http/modules/ngx_http_geo_module.c src/stream/ngx_stream_geo_module.c |
diffstat | 2 files changed, 26 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/modules/ngx_http_geo_module.c Thu Dec 13 17:23:07 2018 +0300 +++ b/src/http/modules/ngx_http_geo_module.c Fri Dec 14 18:11:06 2018 +0300 @@ -215,6 +215,13 @@ break; #endif +#if (NGX_HAVE_UNIX_DOMAIN) + case AF_UNIX: + vv = (ngx_http_variable_value_t *) + ngx_radix32tree_find(ctx->u.trees.tree, INADDR_NONE); + break; +#endif + default: /* AF_INET */ sin = (struct sockaddr_in *) addr.sockaddr; inaddr = ntohl(sin->sin_addr.s_addr); @@ -277,6 +284,12 @@ break; #endif +#if (NGX_HAVE_UNIX_DOMAIN) + case AF_UNIX: + inaddr = INADDR_NONE; + break; +#endif + default: /* AF_INET */ sin = (struct sockaddr_in *) addr.sockaddr; inaddr = ntohl(sin->sin_addr.s_addr);
--- a/src/stream/ngx_stream_geo_module.c Thu Dec 13 17:23:07 2018 +0300 +++ b/src/stream/ngx_stream_geo_module.c Fri Dec 14 18:11:06 2018 +0300 @@ -206,6 +206,13 @@ break; #endif +#if (NGX_HAVE_UNIX_DOMAIN) + case AF_UNIX: + vv = (ngx_stream_variable_value_t *) + ngx_radix32tree_find(ctx->u.trees.tree, INADDR_NONE); + break; +#endif + default: /* AF_INET */ sin = (struct sockaddr_in *) addr.sockaddr; inaddr = ntohl(sin->sin_addr.s_addr); @@ -268,6 +275,12 @@ break; #endif +#if (NGX_HAVE_UNIX_DOMAIN) + case AF_UNIX: + inaddr = INADDR_NONE; + break; +#endif + default: /* AF_INET */ sin = (struct sockaddr_in *) addr.sockaddr; inaddr = ntohl(sin->sin_addr.s_addr);