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;