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;