common: DNSResolver can handle hostnames without dot characters

Unrelated, but similar code-wise to #8643. There is a check in `DNSResolver` which automatically fails to resolve hostnames which do not contain the `.` character. This PR removes that check.
This commit is contained in:
Jeffrey Ryan 2022-11-21 15:54:23 -06:00
parent 365fd45b03
commit 8687da6276
3 changed files with 11 additions and 24 deletions

View file

@ -326,11 +326,6 @@ std::vector<std::string> DNSResolver::get_record(const std::string& url, int rec
dnssec_available = false; dnssec_available = false;
dnssec_valid = false; dnssec_valid = false;
if (!check_address_syntax(url.c_str()))
{
return addresses;
}
// destructor takes care of cleanup // destructor takes care of cleanup
ub_result_ptr result; ub_result_ptr result;
@ -413,16 +408,6 @@ DNSResolver DNSResolver::create()
return DNSResolver(); return DNSResolver();
} }
bool DNSResolver::check_address_syntax(const char *addr) const
{
// if string doesn't contain a dot, we won't consider it a url for now.
if (strchr(addr,'.') == NULL)
{
return false;
}
return true;
}
namespace dns_utils namespace dns_utils
{ {

View file

@ -159,15 +159,6 @@ private:
// TODO: modify this to accommodate DNSSEC // TODO: modify this to accommodate DNSSEC
std::vector<std::string> get_record(const std::string& url, int record_type, boost::optional<std::string> (*reader)(const char *,size_t), bool& dnssec_available, bool& dnssec_valid); std::vector<std::string> get_record(const std::string& url, int record_type, boost::optional<std::string> (*reader)(const char *,size_t), bool& dnssec_available, bool& dnssec_valid);
/**
* @brief Checks a string to see if it looks like a URL
*
* @param addr the string to be checked
*
* @return true if it looks enough like a URL, false if not
*/
bool check_address_syntax(const char *addr) const;
DNSResolverData *m_data; DNSResolverData *m_data;
}; // class DNSResolver }; // class DNSResolver

View file

@ -158,6 +158,17 @@ TEST(DNSResolver, GetTXTRecord)
EXPECT_STREQ("donate.getmonero.org", addr.c_str()); EXPECT_STREQ("donate.getmonero.org", addr.c_str());
} }
TEST(DNSResolver, Localhost)
{
tools::DNSResolver resolver = tools::DNSResolver::create();
bool avail, valid;
std::vector<std::string> ips = resolver.get_ipv4("localhost", avail, valid);
ASSERT_EQ(1, ips.size());
ASSERT_EQ("127.0.0.1", ips[0]);
}
bool is_equal(const char *s, const std::vector<std::string> &v) { return v.size() == 1 && v[0] == s; } bool is_equal(const char *s, const std::vector<std::string> &v) { return v.size() == 1 && v[0] == s; }
TEST(DNS_PUBLIC, empty) { EXPECT_TRUE(tools::dns_utils::parse_dns_public("").empty()); } TEST(DNS_PUBLIC, empty) { EXPECT_TRUE(tools::dns_utils::parse_dns_public("").empty()); }