Mercurial > hg > nginx
comparison src/stream/ngx_stream_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 | 2dc837d16099 |
children |
comparison
equal
deleted
inserted
replaced
7429:e573d74299a0 | 7430:286ae954009d |
---|---|
204 } | 204 } |
205 | 205 |
206 break; | 206 break; |
207 #endif | 207 #endif |
208 | 208 |
209 #if (NGX_HAVE_UNIX_DOMAIN) | |
210 case AF_UNIX: | |
211 vv = (ngx_stream_variable_value_t *) | |
212 ngx_radix32tree_find(ctx->u.trees.tree, INADDR_NONE); | |
213 break; | |
214 #endif | |
215 | |
209 default: /* AF_INET */ | 216 default: /* AF_INET */ |
210 sin = (struct sockaddr_in *) addr.sockaddr; | 217 sin = (struct sockaddr_in *) addr.sockaddr; |
211 inaddr = ntohl(sin->sin_addr.s_addr); | 218 inaddr = ntohl(sin->sin_addr.s_addr); |
212 | 219 |
213 vv = (ngx_stream_variable_value_t *) | 220 vv = (ngx_stream_variable_value_t *) |
263 | 270 |
264 } else { | 271 } else { |
265 inaddr = INADDR_NONE; | 272 inaddr = INADDR_NONE; |
266 } | 273 } |
267 | 274 |
275 break; | |
276 #endif | |
277 | |
278 #if (NGX_HAVE_UNIX_DOMAIN) | |
279 case AF_UNIX: | |
280 inaddr = INADDR_NONE; | |
268 break; | 281 break; |
269 #endif | 282 #endif |
270 | 283 |
271 default: /* AF_INET */ | 284 default: /* AF_INET */ |
272 sin = (struct sockaddr_in *) addr.sockaddr; | 285 sin = (struct sockaddr_in *) addr.sockaddr; |