Mercurial > hg > nginx
comparison src/http/modules/ngx_http_geo_module.c @ 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 | 88aad69eccef |
children | ef6a3a99a81a |
comparison
equal
deleted
inserted
replaced
7429:e573d74299a0 | 7430:286ae954009d |
---|---|
213 } | 213 } |
214 | 214 |
215 break; | 215 break; |
216 #endif | 216 #endif |
217 | 217 |
218 #if (NGX_HAVE_UNIX_DOMAIN) | |
219 case AF_UNIX: | |
220 vv = (ngx_http_variable_value_t *) | |
221 ngx_radix32tree_find(ctx->u.trees.tree, INADDR_NONE); | |
222 break; | |
223 #endif | |
224 | |
218 default: /* AF_INET */ | 225 default: /* AF_INET */ |
219 sin = (struct sockaddr_in *) addr.sockaddr; | 226 sin = (struct sockaddr_in *) addr.sockaddr; |
220 inaddr = ntohl(sin->sin_addr.s_addr); | 227 inaddr = ntohl(sin->sin_addr.s_addr); |
221 | 228 |
222 vv = (ngx_http_variable_value_t *) | 229 vv = (ngx_http_variable_value_t *) |
272 | 279 |
273 } else { | 280 } else { |
274 inaddr = INADDR_NONE; | 281 inaddr = INADDR_NONE; |
275 } | 282 } |
276 | 283 |
284 break; | |
285 #endif | |
286 | |
287 #if (NGX_HAVE_UNIX_DOMAIN) | |
288 case AF_UNIX: | |
289 inaddr = INADDR_NONE; | |
277 break; | 290 break; |
278 #endif | 291 #endif |
279 | 292 |
280 default: /* AF_INET */ | 293 default: /* AF_INET */ |
281 sin = (struct sockaddr_in *) addr.sockaddr; | 294 sin = (struct sockaddr_in *) addr.sockaddr; |