aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormoneromooo-monero <moneromooo-monero@users.noreply.github.com>2015-08-27 21:06:09 +0100
committermoneromooo-monero <moneromooo-monero@users.noreply.github.com>2015-08-27 21:06:09 +0100
commit5990344cb07858b4cd104eacb8d1b9bb38fa6ff7 (patch)
treee4125cca97cd3f34e8fadf1111513c78ac168730
parentMerge pull request #390 (diff)
downloadmonero-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.cpp5
-rw-r--r--src/common/dns_utils.h11
-rw-r--r--tests/unit_tests/dns_resolver.cpp12
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;