Geo: fixed handling of AF_UNIX client addresses (ticket #1684).
Previously, AF_UNIX client addresses were handled as AF_INET, leading
to unexpected results.
Maxim Dounin
3 years ago
214 | 214 | break; |
215 | 215 | #endif |
216 | 216 | |
217 | #if (NGX_HAVE_UNIX_DOMAIN) | |
218 | case AF_UNIX: | |
219 | vv = (ngx_http_variable_value_t *) | |
220 | ngx_radix32tree_find(ctx->u.trees.tree, INADDR_NONE); | |
221 | break; | |
222 | #endif | |
223 | ||
217 | 224 | default: /* AF_INET */ |
218 | 225 | sin = (struct sockaddr_in *) addr.sockaddr; |
219 | 226 | inaddr = ntohl(sin->sin_addr.s_addr); |
273 | 280 | inaddr = INADDR_NONE; |
274 | 281 | } |
275 | 282 | |
283 | break; | |
284 | #endif | |
285 | ||
286 | #if (NGX_HAVE_UNIX_DOMAIN) | |
287 | case AF_UNIX: | |
288 | inaddr = INADDR_NONE; | |
276 | 289 | break; |
277 | 290 | #endif |
278 | 291 |
205 | 205 | break; |
206 | 206 | #endif |
207 | 207 | |
208 | #if (NGX_HAVE_UNIX_DOMAIN) | |
209 | case AF_UNIX: | |
210 | vv = (ngx_stream_variable_value_t *) | |
211 | ngx_radix32tree_find(ctx->u.trees.tree, INADDR_NONE); | |
212 | break; | |
213 | #endif | |
214 | ||
208 | 215 | default: /* AF_INET */ |
209 | 216 | sin = (struct sockaddr_in *) addr.sockaddr; |
210 | 217 | inaddr = ntohl(sin->sin_addr.s_addr); |
264 | 271 | inaddr = INADDR_NONE; |
265 | 272 | } |
266 | 273 | |
274 | break; | |
275 | #endif | |
276 | ||
277 | #if (NGX_HAVE_UNIX_DOMAIN) | |
278 | case AF_UNIX: | |
279 | inaddr = INADDR_NONE; | |
267 | 280 | break; |
268 | 281 | #endif |
269 | 282 |