Mercurial > hg > nginx-quic
comparison src/core/ngx_resolver.c @ 6372:a6a5bacf6b74
Resolver: style.
Use the original query name in error and debug messages when
processing PTR responses.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Thu, 17 Dec 2015 17:30:22 +0300 |
parents | 33c4d319f08f |
children | c94aba230a5a |
comparison
equal
deleted
inserted
replaced
6371:33c4d319f08f | 6372:a6a5bacf6b74 |
---|---|
2394 ngx_resolver_process_ptr(ngx_resolver_t *r, u_char *buf, size_t n, | 2394 ngx_resolver_process_ptr(ngx_resolver_t *r, u_char *buf, size_t n, |
2395 ngx_uint_t ident, ngx_uint_t code, ngx_uint_t nan) | 2395 ngx_uint_t ident, ngx_uint_t code, ngx_uint_t nan) |
2396 { | 2396 { |
2397 char *err; | 2397 char *err; |
2398 size_t len; | 2398 size_t len; |
2399 u_char text[NGX_SOCKADDR_STRLEN]; | |
2400 in_addr_t addr; | 2399 in_addr_t addr; |
2401 int32_t ttl; | 2400 int32_t ttl; |
2402 ngx_int_t octet; | 2401 ngx_int_t octet; |
2403 ngx_str_t name; | 2402 ngx_str_t name; |
2404 ngx_uint_t mask, type, class, qident, a, i, start; | 2403 ngx_uint_t mask, type, class, qident, a, i, start; |
2411 uint32_t hash; | 2410 uint32_t hash; |
2412 ngx_int_t digit; | 2411 ngx_int_t digit; |
2413 struct in6_addr addr6; | 2412 struct in6_addr addr6; |
2414 #endif | 2413 #endif |
2415 | 2414 |
2416 if (ngx_resolver_copy(r, NULL, buf, | 2415 if (ngx_resolver_copy(r, &name, buf, |
2417 buf + sizeof(ngx_resolver_hdr_t), buf + n) | 2416 buf + sizeof(ngx_resolver_hdr_t), buf + n) |
2418 != NGX_OK) | 2417 != NGX_OK) |
2419 { | 2418 { |
2420 return; | 2419 return; |
2421 } | 2420 } |
2422 | 2421 |
2422 ngx_log_debug1(NGX_LOG_DEBUG_CORE, r->log, 0, "resolver qs:%V", &name); | |
2423 | |
2423 /* AF_INET */ | 2424 /* AF_INET */ |
2424 | 2425 |
2425 addr = 0; | 2426 addr = 0; |
2426 i = sizeof(ngx_resolver_hdr_t); | 2427 i = sizeof(ngx_resolver_hdr_t); |
2427 | 2428 |
2445 rn = ngx_resolver_lookup_addr(r, addr); | 2446 rn = ngx_resolver_lookup_addr(r, addr); |
2446 | 2447 |
2447 tree = &r->addr_rbtree; | 2448 tree = &r->addr_rbtree; |
2448 expire_queue = &r->addr_expire_queue; | 2449 expire_queue = &r->addr_expire_queue; |
2449 | 2450 |
2450 addr = htonl(addr); | |
2451 name.len = ngx_inet_ntop(AF_INET, &addr, text, NGX_SOCKADDR_STRLEN); | |
2452 name.data = text; | |
2453 | |
2454 goto valid; | 2451 goto valid; |
2455 } | 2452 } |
2456 | 2453 |
2457 invalid_in_addr_arpa: | 2454 invalid_in_addr_arpa: |
2458 | 2455 |
2493 rn = ngx_resolver_lookup_addr6(r, &addr6, hash); | 2490 rn = ngx_resolver_lookup_addr6(r, &addr6, hash); |
2494 | 2491 |
2495 tree = &r->addr6_rbtree; | 2492 tree = &r->addr6_rbtree; |
2496 expire_queue = &r->addr6_expire_queue; | 2493 expire_queue = &r->addr6_expire_queue; |
2497 | 2494 |
2498 name.len = ngx_inet6_ntop(addr6.s6_addr, text, NGX_SOCKADDR_STRLEN); | |
2499 name.data = text; | |
2500 | |
2501 goto valid; | 2495 goto valid; |
2502 } | 2496 } |
2503 | 2497 |
2504 invalid_ip6_arpa: | 2498 invalid_ip6_arpa: |
2505 #endif | 2499 #endif |
2506 | 2500 |
2507 ngx_log_error(r->log_level, r->log, 0, | 2501 ngx_log_error(r->log_level, r->log, 0, |
2508 "invalid in-addr.arpa or ip6.arpa name in DNS response"); | 2502 "invalid in-addr.arpa or ip6.arpa name in DNS response"); |
2503 ngx_resolver_free(r, name.data); | |
2509 return; | 2504 return; |
2510 | 2505 |
2511 valid: | 2506 valid: |
2512 | 2507 |
2513 if (rn == NULL || rn->query == NULL) { | 2508 if (rn == NULL || rn->query == NULL) { |
2514 ngx_log_error(r->log_level, r->log, 0, | 2509 ngx_log_error(r->log_level, r->log, 0, |
2515 "unexpected response for %V", &name); | 2510 "unexpected response for %V", &name); |
2511 ngx_resolver_free(r, name.data); | |
2516 goto failed; | 2512 goto failed; |
2517 } | 2513 } |
2518 | 2514 |
2519 qident = (rn->query[0] << 8) + rn->query[1]; | 2515 qident = (rn->query[0] << 8) + rn->query[1]; |
2520 | 2516 |
2521 if (ident != qident) { | 2517 if (ident != qident) { |
2522 ngx_log_error(r->log_level, r->log, 0, | 2518 ngx_log_error(r->log_level, r->log, 0, |
2523 "wrong ident %ui response for %V, expect %ui", | 2519 "wrong ident %ui response for %V, expect %ui", |
2524 ident, &name, qident); | 2520 ident, &name, qident); |
2521 ngx_resolver_free(r, name.data); | |
2525 goto failed; | 2522 goto failed; |
2526 } | 2523 } |
2524 | |
2525 ngx_resolver_free(r, name.data); | |
2527 | 2526 |
2528 if (code == 0 && nan == 0) { | 2527 if (code == 0 && nan == 0) { |
2529 code = NGX_RESOLVE_NXDOMAIN; | 2528 code = NGX_RESOLVE_NXDOMAIN; |
2530 } | 2529 } |
2531 | 2530 |