From eca6ac3844ea76056d395c67543ec340709d0f30 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Fri, 23 Jun 2006 03:24:16 +0000 Subject: [PATCH] Se mejora el redireccionado al padre, se usan solo padres no nulos. --- practicas/pipi/src/nameserver.cpp | 20 ++++++++++++++++---- practicas/pipi/src/test_nameserver_zones.txt | 4 ++-- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/practicas/pipi/src/nameserver.cpp b/practicas/pipi/src/nameserver.cpp index 822f6f6..cf7dac3 100644 --- a/practicas/pipi/src/nameserver.cpp +++ b/practicas/pipi/src/nameserver.cpp @@ -248,17 +248,29 @@ ResolvProtoResponse NameServer::resolv_direct(const Name& n) } if (zones.size()) { + // Busco una zona con padre para ver si puedo "trepar" + for (zones_t::const_iterator i = zones.begin(); i != zones.end(); ++i) + { #ifdef DEBUG_RESOLV - std::cerr << "resolv_direct found (al padre): " << zones.front().parent + std::cerr << "resolv_direct -> evaluando padre " << i->parent << "\n"; - ResolvProtoResponse rpr(ResolvProtoResponse::R_NS, zones.front().ttl); - rpr.ips.push_back(zones.front().parent); - return rpr; #endif + if (i->parent != IPAddr(0)) + { +#ifdef DEBUG_RESOLV + std::cerr << "resolv_direct found (al padre): " + << i->parent << "\n"; +#endif + ResolvProtoResponse rpr(ResolvProtoResponse::R_NS, i->ttl); + rpr.ips.push_back(i->parent); + return rpr; + } + } } #ifdef DEBUG_RESOLV std::cerr << "resolv_direct NOT FOUND (no hay padre)\n"; #endif + // No hay padre, no puedo hacer nada más return ResolvProtoResponse(ResolvProtoResponse::R_NOTFOUND); } diff --git a/practicas/pipi/src/test_nameserver_zones.txt b/practicas/pipi/src/test_nameserver_zones.txt index 4752260..655bd40 100644 --- a/practicas/pipi/src/test_nameserver_zones.txt +++ b/practicas/pipi/src/test_nameserver_zones.txt @@ -1,4 +1,4 @@ -mi.super.nombre 600 10.10.10.1 +mi.super.nombre 600 0.0.0.0 tito A 10.10.100.1 juan A 10.10.100.2 juan A 10.10.100.3 @@ -10,7 +10,7 @@ otro NS 10.10.100.101 mas NS 10.10.200.1 otro NS 10.10.200.2 -mas.super.nombres 9500 10.10.1.100 +mas.super.nombres 9500 10.10.10.1 tito A 10.1.100.1 juan A 10.1.100.2 juan A 10.1.100.3 -- 2.43.0