X-Git-Url: https://git.llucax.com/z.facultad/75.74/practicos.git/blobdiff_plain/7d8251a896fb605deaea8b0138d5a20c699803f6..5f8ce7344f3e7cba2f4c7a8dbe17471a0387e92d:/practicas/pipi/src/nameserver.cpp?ds=sidebyside diff --git a/practicas/pipi/src/nameserver.cpp b/practicas/pipi/src/nameserver.cpp index 23a2e23..b7346b7 100644 --- a/practicas/pipi/src/nameserver.cpp +++ b/practicas/pipi/src/nameserver.cpp @@ -309,7 +309,6 @@ ResolvProtoResponse NameServer::resolv_recursive(const Name& n) std::cerr << "NameServer::resolv_recursive -> gotcha! " << rpr << "\n"; #endif - // TODO agregar a cache break; } return rpr; // Devuelvo el A o NOTFOUND @@ -346,7 +345,6 @@ ResolvProtoResponse NameServer::resolv_recursive_r(const Name& n, std::cerr << "NameServer::resolv_recursive_r -> gotcha! " << r << "\n"; #endif - // TODO agregar a cache return r; // Gotcha! } } @@ -376,6 +374,9 @@ ResolvProtoResponse NameServer::query(const Name& n, const IPAddr& ip) std::cerr << "NameServer::query -> recibido " << resp << " de " << ip << "\n"; #endif + // Agrego a cache + if (resp.ret == RP_RES_A) + cache[n] = CacheRecord(time(NULL) + resp.ttl, resp.ips); return resp; } @@ -429,8 +430,13 @@ void NameServer::send_loop() Dev::mac_type mac = 0; std::string buf = snd_que.receive(mac); #ifdef DEBUG_RESOLV - std::cout << "NameServer::send_loop() -> envío request " - << ResolvProtoResponse(buf) << "\n"; + uint8_t type; + memcpy(&type, s.data(), sizeof(uint8_t)); + std::cout << "NameServer::send_loop() -> envío " + if (type == RP_REQ_DIRECT || type == RP_REQ_RECURSIVE) + std::cout << "request " << ResolvProtoRequest(buf) << "\n"; + else + std::cout << "response " << ResolvProtoResponse(buf) << "\n"; #endif ipout.send(buf, RESOLV_PROTO, IPAddr(mac)); }