}
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);
}
-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
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