From: Leandro Lucarella Date: Fri, 23 Jun 2006 03:24:16 +0000 (+0000) Subject: Se mejora el redireccionado al padre, se usan solo padres no nulos. X-Git-Tag: svn_import~28 X-Git-Url: https://git.llucax.com/z.facultad/75.74/practicos.git/commitdiff_plain/eca6ac3844ea76056d395c67543ec340709d0f30?ds=sidebyside Se mejora el redireccionado al padre, se usan solo padres no nulos. --- 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