diff options
author | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2015-08-27 21:06:09 +0100 |
---|---|---|
committer | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2015-08-27 21:06:09 +0100 |
commit | 5990344cb07858b4cd104eacb8d1b9bb38fa6ff7 (patch) | |
tree | e4125cca97cd3f34e8fadf1111513c78ac168730 | |
parent | Merge pull request #390 (diff) | |
download | monero-5990344cb07858b4cd104eacb8d1b9bb38fa6ff7.tar.xz |
dns: make ctor private
This ensures one can't instanciate a DNSResolver object by
mistake, but uses the singleton. A separate create static
function is added for cases where a new object is explicitely
needed.
-rw-r--r-- | src/common/dns_utils.cpp | 5 | ||||
-rw-r--r-- | src/common/dns_utils.h | 11 | ||||
-rw-r--r-- | tests/unit_tests/dns_resolver.cpp | 12 |
3 files changed, 21 insertions, 7 deletions
diff --git a/src/common/dns_utils.cpp b/src/common/dns_utils.cpp index e442d3d81..8b7c9b4d9 100644 --- a/src/common/dns_utils.cpp +++ b/src/common/dns_utils.cpp @@ -334,6 +334,11 @@ DNSResolver& DNSResolver::instance() return *staticInstance; } +DNSResolver DNSResolver::create() +{ + return DNSResolver(); +} + bool DNSResolver::check_address_syntax(const char *addr) { // if string doesn't contain a dot, we won't consider it a url for now. diff --git a/src/common/dns_utils.h b/src/common/dns_utils.h index 1e726c80c..50e8001f1 100644 --- a/src/common/dns_utils.h +++ b/src/common/dns_utils.h @@ -49,7 +49,7 @@ struct DNSResolverData; */ class DNSResolver { -public: +private: /** * @brief Constructs an instance of DNSResolver @@ -58,6 +58,8 @@ public: */ DNSResolver(); +public: + /** * @brief takes care of freeing C pointers and such */ @@ -119,6 +121,13 @@ public: */ static DNSResolver& instance(); + /** + * @brief Gets a new instance of DNSResolver + * + * @return returns a pointer to the new object + */ + static DNSResolver create(); + private: /** diff --git a/tests/unit_tests/dns_resolver.cpp b/tests/unit_tests/dns_resolver.cpp index 0709a773f..3285f7732 100644 --- a/tests/unit_tests/dns_resolver.cpp +++ b/tests/unit_tests/dns_resolver.cpp @@ -35,7 +35,7 @@ TEST(DNSResolver, IPv4Success) { - tools::DNSResolver resolver; + tools::DNSResolver resolver = tools::DNSResolver::create(); bool avail, valid; @@ -55,7 +55,7 @@ TEST(DNSResolver, IPv4Success) TEST(DNSResolver, IPv4Failure) { // guaranteed by IANA/ICANN/RFC to be invalid - tools::DNSResolver resolver; + tools::DNSResolver resolver = tools::DNSResolver::create(); bool avail, valid; @@ -70,7 +70,7 @@ TEST(DNSResolver, IPv4Failure) TEST(DNSResolver, DNSSECSuccess) { - tools::DNSResolver resolver; + tools::DNSResolver resolver = tools::DNSResolver::create(); bool avail, valid; @@ -86,7 +86,7 @@ TEST(DNSResolver, DNSSECSuccess) TEST(DNSResolver, DNSSECFailure) { - tools::DNSResolver resolver; + tools::DNSResolver resolver = tools::DNSResolver::create(); bool avail, valid; @@ -103,7 +103,7 @@ TEST(DNSResolver, DNSSECFailure) // It would be great to include an IPv6 test and assume it'll pass, but not every ISP / resolver plays nicely with IPv6;) /*TEST(DNSResolver, IPv6Success) { - tools::DNSResolver resolver; + tools::DNSResolver resolver = tools::DNSResolver::create(); bool avail, valid; @@ -123,7 +123,7 @@ TEST(DNSResolver, DNSSECFailure) TEST(DNSResolver, IPv6Failure) { // guaranteed by IANA/ICANN/RFC to be invalid - tools::DNSResolver resolver; + tools::DNSResolver resolver = tools::DNSResolver::create(); bool avail, valid; |