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