add comments to the code

This commit is contained in:
Arthur Passos 2023-01-26 13:54:12 -03:00
parent 433eda70fd
commit ea38df2c28
2 changed files with 21 additions and 16 deletions

View File

@ -82,7 +82,7 @@ namespace DB
resolve(ip, ptr_records);
if (!wait())
if (!wait_and_process())
{
cancel_requests();
throw DB::Exception("Failed to complete reverse DNS query for IP " + ip, DB::ErrorCodes::DNS_ERROR);
@ -99,7 +99,7 @@ namespace DB
resolve_v6(ip, ptr_records);
if (!wait())
if (!wait_and_process())
{
cancel_requests();
throw DB::Exception("Failed to complete reverse DNS query for IP " + ip, DB::ErrorCodes::DNS_ERROR);
@ -125,7 +125,7 @@ namespace DB
ares_gethostbyaddr(channel, reinterpret_cast<const void*>(&addr), sizeof(addr), AF_INET6, callback, &response);
}
bool CaresPTRResolver::wait()
bool CaresPTRResolver::wait_and_process()
{
int sockets[ARES_GETSOCK_MAXNUM];
pollfd pollfd[ARES_GETSOCK_MAXNUM];
@ -140,17 +140,19 @@ namespace DB
{
number_of_fds_ready = poll(readable_sockets.data(), static_cast<nfds_t>(readable_sockets.size()), static_cast<int>(timeout));
// will add comments/ improve readability soon
if (number_of_fds_ready < 0)
bool poll_error = number_of_fds_ready < 0;
bool is_poll_error_an_interrupt = poll_error && errno == EINTR;
/*
* Retry in case of interrupts and return false in case of actual errors.
* */
if (is_poll_error_an_interrupt)
{
if (errno == EINTR)
{
continue;
}
else
{
return false;
}
continue;
}
else if (poll_error)
{
return false;
}
}
@ -187,7 +189,7 @@ namespace DB
if (ARES_GETSOCK_READABLE(sockets_bitmask, i))
{
pollfd[i].fd = sockets[i];
pollfd[i].events = POLLRDNORM | POLLIN;
pollfd[i].events = C_ARES_POLL_EVENTS;
}
if (pollfd[i].events)
@ -227,7 +229,7 @@ namespace DB
{
for (auto readable_socket : readable_sockets)
{
auto fd = readable_socket.revents & (POLLRDNORM | POLLIN) ? readable_socket.fd : ARES_SOCKET_BAD;
auto fd = readable_socket.revents & C_ARES_POLL_EVENTS ? readable_socket.fd : ARES_SOCKET_BAD;
ares_process_fd(channel, fd, ARES_SOCKET_BAD);
}
}

View File

@ -23,6 +23,9 @@ namespace DB
* Allow only DNSPTRProvider to instantiate this class
* */
struct provider_token {};
static constexpr auto C_ARES_POLL_EVENTS = POLLRDNORM | POLLIN;
public:
explicit CaresPTRResolver(provider_token);
~CaresPTRResolver() override;
@ -32,7 +35,7 @@ namespace DB
std::unordered_set<std::string> resolve_v6(const std::string & ip) override;
private:
bool wait();
bool wait_and_process();
void cancel_requests();